게임 오브젝트 제어

suhan cho·2022년 9월 24일
0

클래스와 오브젝트

  • 객체지향
    휴대폰을 여러 부품의 집합으로 여기지 않고 하나의 온전한 오브젝트로 보듯 오브젝트의 집합을 구성하는 방법

클래스

  • 묘사할 대상과 관련 코드를 묶는 틀

오브젝트

  • 설계도인 클래스와 달리 실제로 존재하는 실체
  • 클래스라는 틀로 오브젝트를 찍어내 실체화 하는 것 인스턴스화라 한다
  • 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 컴포넌트를 추가한다

정리

  1. 필요한 컴포넌트를 게임 오브젝트에 추가
  2. 스크립트에서 조종할 컴포넌트에 대한 변수를 선언
  3. 변수에 컴포넌트를 할당
  4. 코드에서 변수를 사용하면 그것이 가리키는 실제 컴포넌트가 동작
profile
안녕하세요

0개의 댓글