250606

lililllilillll·2025년 6월 6일

개발 일지

목록 보기
194/350

✅ What I did today


  • LD Challenge : L001 : Day 8


🎯 LD Challenge : L001 : Day 8


배운 것

https://www.youtube.com/watch?v=6DcwHPxCE54

  • 코드로 만든 요소 동적 추가 말고도 [UxmlElement], [UxmlAttribute] 붙이면 UI Builder에서 붙일 수 있다.
  • Localization 하는 방법 (좀 불편한듯)
  • 데이터 바인딩도 정적이라면 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도 필요 없나? 내일 고민하고 삭제

한 것

  • Json으로 저장된 Text Tree를 불러온다 or New 버튼으로 Text Tree 파일을 새로 생성한다
    • Text tree field 값과 text node text field 값을 초기화한다
  • Add Node 버튼으로 Node를 생성한다
    • TextNodeData를 node element에 할당하고, save용 list에도 할당한다.
  • text node text field 값을 변경하면 node의 text node data에 접근해서 text를 변경한다
  • save 버튼을 누르면 list를 순회하며 { text } 저장



profile
너 정말 **핵심**을 찔렀어

0개의 댓글