[유니티/C#] this 키워드와 이벤트 함수

728x90

this 키워드

메모리는 저장되는 주소, 변수는 그 주소를 한 번에 볼 수 있는 이름의 개념으로 생각하면 된다.

예) 서울역(변수), 서울시 중구 한강대로 405(메모리)

Class는 Heap 영역, 함수는 Code 영역(함수만 들어가 있는 table이 있어 호출하는 개념), 변수는 Stack영역에 저장 

obj a = new obj() 객체를 생성하면 heap 메모리 공간에 할당한다.

Gameobject obj = new GameObject();

- GameOjbect : 클래스 

- obj : 변수 

- new GameObject() : 생성자 함수(객체를 생성해주는 함수, heap 메모리 공간 할당)  

 

this는 함수와 변수 등이 저장되어 있는 메모리 영역에 관련한 이슈, C/C++ 참고

GameObject Player;

// Translate() 파라미터는 없지만 시스템 상에는 player가 들어가 있다
player.Translate()
player.Traslate(player);

// Translate() 라고 쓰지만 시스템 상에는 파라미터에 (GameObject this)가 들어가 있기 때문에
// this 키워드를 사용해 호출해준다.
Translate(GameObject this)
{
	this.transform.position ~;
}

void A (TestA this)
{
       this. ~ ;
}

 

이벤트 함수 차이

충돌과 관련된 필수 컴포넌트 : Collider & Rigidbody

isKinemataic 체크 -> 물리 적용 x / isKinematic 체크 해제 -> 물리 적용

 

- OnCollsionEnter()를 사용하는 경우는 물리적 충돌이 발생했을 때 이벤트가 발생하는 함수

- OnTriggerEnter()를 사용하는 경우는 물리적 충돌이 발생하지 않았을 때 이벤트가 발생하는 함수
(예 : 화면 밖으로 나가는 Bullet을 인식하여 파괴하는 DestroyZone)

728x90