[Unity Editor Scripting] EditorStyles null Reference
EditorStyles null Reference문제점Editor를 상속받은 클래스의 OnEnable에서 GUIStyle을 사용하려면 NullReference가 발생한다. 무조건은 아니지만, 다시 리로드되는 타이밍에는 직렬화 되지 않은 데이터는 초기화되므로 무조건 다시 NullReference가 발생하는 것 같다.private void OnEnable(){ Init(); //SOManagers.instance.hexGridGenerator = new HexGridGenerator(_hCGeneration.HexPrefab);}private void Init(){ _mainHeaderStyle = new GUIStyle(EditorStyles.boldLabel) { fon..
2024.12.06
no image
[Unity] 유니티의 직렬화(serialization)와 재귀 문제 회피
스크립트 직렬화직렬화는 자료 구조(data structure) 또는 게임 오브젝트의 상태를 유니티가 저장할 수 있고 추후 Reconstruct 할 수 있는 포맷으로 자동 변환하는 프로세스이다. 유니티 프로젝트에서 데이터를 구성하는 방식은 데이터를 직렬화 하는 방식에 영향을 미치며, 이는 프로젝트 성능에 큰 영향을 미칠 수 있다. 직렬화 규칙Unity의 Serializer는 런타임에 효율적으로 동작하도록 디자인되었다. 이는 유니티의 직렬화가 다른 프로그래밍 환경의 직렬화와 다르게 동작하기 때문이다. Unity의 직렬화는 프로퍼티가 아닌 C# 클래스의 필드에서 직접 동작하기에 유니티는 특정 조건을 충족할 때만 직렬화를 수행한다. 필드 직렬화를 하는 방법public으로 선언 또는 SerializeField a..
2024.11.09
no image
[Unity Editor Scripting] Editor관련 함수 정리
EditorWindowScriptableObject를 상속받아 구현된 클래스이며 UnityEditor의 네임스페이스에 속한다. 이 클래스를 사용하여 유니티 에디터의 기본 창과 유사하게 독립적으로 띄울 수있거나 탭에 부착 가능한 Editor window를 만들 수 있다.  다음 다이어그램은 에디터 윈도우의 실행 순서이다.OnEnable: 스크립트가 로드되거나 오브젝트가 활성화될 때 호출된다.EditorApplication.isUpdating: true라면, 에디터는 현재 AssetDatabase를 새로고침 중이다.CreateGUI: 에디터가 업데이트 중이 아니라면 GUI를 생성한다.Update: 프레임당 한 번 호되어 스크립트의 로직을 업데이트 한다.OnGUI: GUI 이벤트를 렌더링하고 핸들링하기 위해 ..
2024.10.25