https://www.youtube.com/watch?v=6DcwHPxCE54
[UxmlElement], [UxmlAttribute] 붙이면 UI Builder에서 붙일 수 있다.UI Builder > uxml 선택 > Inspector > Editor Extension Authoring 체크하면 Editor에서만 쓸 수 있는 다양한 Component 추가됨
새로 추가된 Object Field 끌어다놨더니 저장하자마자 에러.
UXML xmlns="UnityEngine.UIElements"가 원인이었다.
Object Field는 UnityEditor.UIElements를 사용하는데, 아무리 기본적으로
<UnityEditor.UIElements.ObjectField label="Object Field" /> 라고 namesapce가 지정돼있어도
기본 namespace UnityEngine.UIElements가 앞에 붙어버려서 오류가 나버린 것.
<UXML xmlns="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
<uie:ObjectField name="myField" />
이런 식으로 해결함.
Object Field에서 인식 가능한 파일 종류를 제한하려고 type="UnityEngine.TextAsset"을 사용했는데 어셈블리가 다르다고 uxml에서 인식을 못함. csharp에서 런타임으로 등록해야 했음.
Text Asset이 아닌 json 파일들만 인식시키는 건 불필요하게 복잡해보여서 그냥 이름 앞에 TextTree_ 기본으로 설정하는 걸로 UX 유도.
다른 node 접근 때문에 dict로 만들고 key field도 추가했던 건데,
이미 nodelement에서 text node data를 참조로 들고 있어서 dict를 거칠 이유가 없다는 사실을 알게 됨.
key도 필요 없나? 내일 고민하고 삭제
