[ GameObject ]
[ 컴포넌트 상호작용 ]
SendMessage와 BroadcastMessage : 성능이 느리다.
Invoke
public MonoBehaviour Handler = null;
Handler.Invoke("OnSave", 0.0f);
Handler 변수에 Script가 직접 대입되지 않음 / GameObject에 Script를 넣고 GameObject 자체를 넣어야 함( 그것도 첫번째 스크립트만 인식)
[ GameObject와 월드 ]
[ 게임오브젝트 찾기 ]
[ 오브젝트 비교 ]
CompareTag()
Obj.CompareTag("...")
GetInstanceID()
Tag가 같은 GameObject 내에서도 정확하게 내가 찾고자 하는 GameObject를 찾고자 할 때 사용할 수 있는 함수
[ 가장 가까운 오브젝트 찾기 ]
Distance(정점위치, 정점위치) 함수를 사용하여 찾음
Distance() 리턴 값은 float형의 거리
[ 지정한 형식의 오브젝트 모두 찾기 ]
Collider[] Cols = FindObjectsOfType<Collider>()
Collider가 있는 모든 객체들의 Collider를 얻어옴 / 그러나 매우 느림
[ 게임오브젝트 간 경로 만들기 ]
Physics.Linecast : 두 정점 사이에 Collider가 있으면 true 리턴
Gizmos.DrawLine : 선 그리는 함수
[ 월드 및 시간과 업데이트 ]
Update / FixedUpdate / LateUpdate
[ 규칙 1: 프레임은 소중한 것이다 ]
Update함수에서는 꼭 필요한 것들만 해야 한다.
Event함수(On~~~ 함수들)들이 부하를 줄여주는 역할을 한다.
[ 규칙 2: 움직임은 시간과 비례해야 한다 ]
Time.deltatime
[ 소멸되지 않는 오브젝트 ]
DontDestroyOnload
씬들을 넘나들 수 있도록 오브젝트를 유지 시켜줌
그러나 하위의 자식 오브젝트와 메시, 텍스처, 사운드 등의 애셋이나 리소스 또한 모두 유지 되므로 중복된 로드가 되지 않도록 유의 해야 함
[ 싱글턴 오브젝트와 정적 멤버 ]
싱글턴을 이용하여 게임오브젝트를 로드하면, 씬들 내에서 한번만의 로딩이 가능함
GameManger를 만들고 이를 싱글톤화한 다음 DontDestroyOnLoad를 수행