본문 바로가기
게임 개발/유니티

참조 타입 변수, GetComponent<>();

by FlowTree 2020. 2. 19.
반응형

참조타입 변수

1.참조 타입으로 스크립트에서 변수를 통해 해당 컴포넌트 조종 가능

2.참조 변수는 1)실체가 아닌, 2)실체로 향하는 참조값을 저장함

3.게임오브젝트의 컴포넌트를 스크립트에서 참조 타입 변수로 선언, 접근하여, 제어 가능하다.

 

예) public Rigidbody playerRigidbody;

 

해당 게임 오브젝트의 리지드바디 컴포넌트(유니티의 클래스)를 playerRigidbody 참조 변수로 선언

public으로 지정되어 클래스 외부에서도 접근 가능

 

void Start() 

{

   playerRigidbody.AddForce(0, 500, 0);

}

 

참조타입 변수로 리지드바디 컴포넌트에 접근하여, 리지드바디의 AddForce 기능을 사용 가능

 

 

참조타입 변수에 컴포넌트 연결

참조타입 변수가 선언된 스크립트를 게임 오브젝트에 할당하면 인스펙터에서 참조타입 변수의 필드가 비어있다.

이 때 게임오브젝트의 관련 컴포넌트를 연결해야 온전히 스크립트를 적용 가능하다.

 

예) TestRigidbody 스크립트

     aRigidbody = Rigidbody 참조 타입 변수

     Cube 오브젝트에 할당된 TestRigidbody 스크립트의 aRigidbody 필드는 비어있음

     TestRigidbody에서 참조타입 변수를 사용한 기능을 사용하려면 Cube 오브젝트 내부의 Rigidbody 컴포넌트를 
     연결해야한다.

    

비어있는 참조타입변수의 필드

 

컴포넌트 연결 방법

1. public으로 참조타입변수를 선언하고, 게임오브젝트에 할당된 관련 컴포넌트를  드래그&드롭으로 할당하기

인스펙터의 Rigidbody 이름 영역을 드래그하여 A Rigidbody의 빈 필드에 드롭하기

2.GetComponenet<컴포넌트>() 메서드 사용하기

private로 선언한 참조변수는 인스펙터에서 볼 수 없다. 스크립트에 GetComponent<>()메서드를 이용하여 게임오브젝트 안의 컴포넌트를 할당해줄 수 있다.

 

예)

 

    private Rigidbody aRigidbody; 
    public float speed = 500f; 

    void Start() 
    { 
     aRigidbody = GetComponent<Rigidbody> ();

     //플레이를 하면(Start()메서드라서) 게임오브젝트 내부에 있는 Rigidbody컴포넌트를 aRigbody에 할당한다.


     aRigidbody.AddForce(0, speed, 0);

    //게임오브젝트에게 aRigidbody의 AddForce 기능으로 speed 값 만큼 힘을 준다.

    // = 할당된 게임오브젝트는 500f의 위력으로 점프함
   }

반응형

댓글