클래스와 오브젝트
- 객체지향
휴대폰을 여러 부품의 집합으로 여기지 않고 하나의 온전한 오브젝트로 보듯 오브젝트의 집합을 구성하는 방법
클래스
오브젝트
- 설계도인 클래스와 달리 실제로 존재하는 실체
- 클래스라는 틀로 오브젝트를 찍어내 실체화 하는 것 인스턴스화라 한다
- new 클래스명 -> 인스턴스화 한다
MonoBehaviour는 new를 사용하지 않는다
-
대부분의 스크립트는 MonoBehaviour를 상속하지만 이를 상속한 클래스는 new로 오브젝트로 생성 할 수 없다
-
이를 상속한 클래스는 드래그 & 드롭 등으로 스크립트를 게임 오브젝트에 컴포넌트 추가 하는 방식으로만 가능
-
이를 상속한 클래스는 컴포넌트로만 동작, 컴포넌트 게임 오브젝트에 추가될 때 컴포넌트로서 필요한 초기화 과정 거침
참조값 변경
- 인스턴스화 한 두개의 객체를 '='을 사용하면 값이 같아지는 것이 아닌 주소값을 참조하게 된다
void Start()
{
Animal tom = new Animal();
tom.name = "톰";
Animal jerry = new Animal();
jerry.name = "제리"
jerry = tom
- jerry는 tom을 가리키게 된다
- 기존에 있던 jerry는 가비지컬렉터에 의해 메모리 삭제
변수로 컴포넌트 사용하기
- Rigidbody 사용
- 타입의 변수 Rigidbody 오브젝트는 그자체는 아니지만 실제 Rigidbody 오브젝트를 가리킬 수 있다
public class Jumper : MonoBehaviour
{
public Rigidbody myRigidbdoy;
void Start()
{
myRigidbody.AddForce(0, 500, 0);
}
}
- 게임 오브젝트에 스크립트를 넣고 Rigidbody 컴포넌트를 추가한다
정리
- 필요한 컴포넌트를 게임 오브젝트에 추가
- 스크립트에서 조종할 컴포넌트에 대한 변수를 선언
- 변수에 컴포넌트를 할당
- 코드에서 변수를 사용하면 그것이 가리키는 실제 컴포넌트가 동작