Unity 스크립팅 API 안내 문서
소개
Unity는 다양한 게임과 애플리케이션을 개발하기 위한 강력한 엔진입니다. 이 문서는 Unity에서 스크립트를 작성하고 활용하는 방법에 대한 정보를 제공합니다.
Unity 아키텍처 개요
Unity의 아키텍처는 여러 단계로 구성되어 있으며, 각 단계는 플레이 모드 시작 시 중요합니다. 해당 단계는 다음과 같습니다:
- 현재 씬 백업
씬이 수정된 경우에만 발생하며, 플레이 모드가 종료될 때 원래 상태로 복원할 수 있도록 합니다. - 도메인 재로드
스크립팅 도메인을 초기화하여 스크립트 상태를 새로고침합니다. - 씬 재로드
씬을 다시 로드하여 씬 상태를 초기화합니다. - 씬 업데이트
렌더링 없이 두 번, 렌더링을 포함하여 또 한 번 수행합니다. - 도메인 재로드와 씬 재로드가 비활성화된 경우, Unity는 이러한 단계를 건너뛰고 이전 상태를 유지합니다.
재로드 단계 설명
플레이 모드 시작 시 Unity의 동작을 자세히 설명합니다:
| 단계 | 설명 |
|---|---|
| AssemblyReloadEvent beforeAssemblyReload | C# 도메인이 중지되며, 모든 MonoBehaviour와 ScriptableObject의 OnDisable() 함수가 호출됩니다. |
| 상태 직렬화 | 모든 MonoBehaviour와 ScriptableObject 상태가 직렬화됩니다. OnBeforeSerialize()가 호출됩니다. |
| 자식 도메인 로드 | Unity의 자식 도메인이 다시 로드됩니다. |
| 어셈블리 로드 | 시스템 및 사용자 어셈블리가 로드됩니다. |
| 스크립팅 상태 복원 | 모든 Unity 오브젝트의 상태가 역직렬화되며, OnAfterDeserialize()가 호출됩니다. |
이러한 단계와 이벤트는 Unity가 동일한 환경에서 스크립트를 관리하고 실행하도록 돕습니다.
활용 및 응용 예제
1. 에디터 스크립트 활용
Unity 에디터에서 자동으로 특정 작업을 수행하도록 설정할 수 있습니다. 예를 들어, 씬이 로드될 때마다 특정 기능을 호출하도록 스크립트를 작성할 수 있습니다.
[InitializeOnLoad]
public static class SceneLoader
{
static SceneLoader()
{
EditorApplication.hierarchyChanged += OnHierarchyChanged;
}
private static void OnHierarchyChanged()
{
// 코드 실행
}
}
2. 스크립트의 상태 관리
게임 오브젝트가 씬에서 로드될 때 필요한 초기화 작업을 자동으로 실행할 수 있습니다. 예를 들어, Unity 오브젝트에 초기값을 설정하는 코드를 작성할 수 있습니다.
public class GameInitializer : MonoBehaviour
{
void Awake()
{
// 초기화 코드
}
}
3. 사용자 정의 검사 도구 만들기
씬과 도메인 재로드를 활용하여 특정 조건을 체크하거나 리포트를 생성하는 사용자 정의 검사 도구를 만들 수 있습니다.
public class CustomValidator : MonoBehaviour
{
void OnValidate()
{
// 유효성 검사 코드
}
}
결론
Unity에서 스크립팅을 활용하는 것은 복잡할 수 있지만, 이 문서에서 제공된 정보와 예제를 통해 여러분의 게임 개발 프로세스를 향상할 수 있습니다. Unity의 재로드 기능과 스크립팅 API를 이해하는 것은 효율적인 개발에 큰 도움이 됩니다.