
Unity 게임 엔진에서 사용되는 C# 스크립트는 다양한 기본 메서드들을 제공하여 게임 개발 과정을 도와준다.
생명주기를 관리하는 메서드부터, 입력 처리, 물리 엔진과의 상호작용, 그리고 그래픽 렌더링에 이르기까지 다양한 종류가 있다.
MonoBehaviour
생명주기 관련 메서드
유니티의모든스크립트는MonoBehaviour클래스를 상속받으며,
이 클래스는 게임 오브젝트의 생명주기를 관리하는 다양한 메서드를 제공한다.
- 게임 오브젝트에 부여할 수 있는 다양한 동작과 상호작용을 정의하는 데 사용
- Unity에서 스크립트를 작성할 때 가장 핵심적으로 사용되는 클래스
MonoBehaviour의 생명주기 메서드들은 Unity 엔진에 의해 자동으로 호출되며, 게임 오브젝트가 생성되고, 업데이트되며, 파괴되는 과정을 관리한다.
Awake()
- 게임 시작 전, 스크립트 인스턴스가 로드될 때 실행
- 게임 오브젝트의 활성화 상태와 무관하게 호출
Start()메서드보다 먼저 호출- 예시 : 게임 매니저의 싱글턴 등
Start()
Awake()다음에 실행되며, 스크립트가 처음 활성화될 때 한 번만 호출- 초기화 작업에 주로 사용
- 예시: 플레이어 시작 위치를 지정하거나, 시작 시 기본 아이템을 플레이어에게 부여 등
Update()
- 매 프레임마다 호출되어 게임 로직을 업데이트
- 사용자 입력 처리나 시간에 따른 변화를 관리하는 데 사용
- 예시 : 이동, 여러가지 입력 로직 등
FixedUpdate()
- 일정한 시간 간격으로 실행되어 주로 물리 업데이트를 처리
- 프레임 속도의 변화에 영향을 받지 않아 물리 연산과 관련된 로직 실행에 적합 (rigid body)
- 플레이어의 이동 속도를 일정하게 유지, 물리적 충돌 처리 등
LateUpdate()
- 모든
Update()메서드가 호출된 후 매 프레임마다 호출- 다른 오브젝트들이 이미 움직인 후 실행되므로 카메라 이동과 같은 후처리 작업에 적합
OnEnable() / OnDisable()
- 스크립트가 활성화 / 비활성화 될 때 각각 호출
- 게임 오브젝트의 생명주기와 밀접하게 연관
- 리소스 할당 및 해제, 이벤트 리스너 등록 및 해제와 같은 작업을 수행
Input 클래스
사용자의 입력을 처리
Input.GetKeyDown(),Input.GetKey(),Input.GetKeyUp()등으로 특정 키 입력을 감지
OnCollisionEnter(), OnCollisionExit(), OnCollisionStay()
- 물리 충돌이 시작, 종료되거나 지속될 때 호출
- 오브젝트가 충돌 벽(collision)에 충돌했을 때 등의 실제 반응 처리
OnTriggerEnter(), OnTriggerExit(), OnTriggerStay()
트리거(Collider의
IsTrigger옵션이 활성화된 상태)와의 상호작용이 시작, 종료되거나 지속될 때 호출됩니다.
- 통과 가능한 충돌 영역 처리에 사용
- 예시 : 아이템을 획득하는 영역에 들어갔을 때 아이템을 주거나, 특정 영역을 통과하면서 원하는 로직 적용
OnGUI()
- IMGUI(Immediate Mode GUI) 시스템을 사용하여 그래픽 사용자 인터페이스 요소를 그리는 데 사용
- 개발 중 디버그 정보를 화면에 표시하거나, 간단한 버튼 생성
- 복잡한 UI 구성 or 최신 프로젝트에서는
UGUI (Unity's GUI system)를 사용하는 것을 권장