using UnityEngine; using UnityEngine.UIElements; using System; // MonoBehaviour¸¦ »ó¼Ó¹Þ¾Æ uGUI ½Ã½ºÅÛ°ú ÇÔ²² µ¿ÀÛÇÕ´Ï´Ù [RequireComponent(typeof(UIDocument))] public class LibraryViewController : MonoBehaviour { // µå·¡±× »óÅ ¿ÜºÎ ¾Ë¸²¿ë À̺¥Æ® public event Action OnDragStateChanged; private VisualElement rootElement; private ScrollView itemScrollView; void Awake() { // 1. °°Àº °ÔÀÓ¿ÀºêÁ§Æ®¿¡ ÀÖ´Â UIDocument¿¡¼­ root VisualElement¸¦ °¡Á®¿É´Ï´Ù. var uiDocument = GetComponent(); rootElement = uiDocument.rootVisualElement; // 2. UXML¿¡ Á¤ÀÇµÈ ÁÖ¿ä ¿ä¼ÒµéÀ» ã½À´Ï´Ù. itemScrollView = rootElement.Q("item-scroll-view"); // 3. ¶óÀ̺귯¸® µ¥ÀÌÅÍ ·Îµù ¹× UI »ý¼ºÀ» È£ÃâÇÕ´Ï´Ù. LoadAndDisplayLibrary(); // 4. µå·¡±× ·ÎÁ÷À» ´ã´çÇÒ Manipulator¸¦ µî·ÏÇϰí, OnDragStateChanged À̺¥Æ®¸¦ ¹ß»ý½Ãŵ´Ï´Ù. // ÀÌ ºÎºÐÀº ÀÌÀü ´äº¯ÀÇ LibraryView ³»ºÎ ·ÎÁ÷°ú µ¿ÀÏÇÕ´Ï´Ù. } // uGUI ¹öư µî ¿ÜºÎ¿¡¼­ ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇÏ¿© À̺¥Æ®¸¦ ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù. public void ConnectToCamera(Action cameraControlAction) { OnDragStateChanged += cameraControlAction; } private void LoadAndDisplayLibrary() { // TODO: ¶óÀ̺귯¸® µ¥ÀÌÅ͸¦ ºÒ·¯¿É´Ï´Ù. // var libraryData = ... // TODO: µ¥ÀÌÅ͸¦ ±â¹ÝÀ¸·Î ¾ÆÀÌÅÛ VisualElement¸¦ »ý¼ºÇÏ¿© itemScrollView¿¡ Ãß°¡ÇÕ´Ï´Ù. // ¿¹: foreach (var itemData in libraryData) { itemScrollView.Add(new LibraryItem(itemData)); } } void OnDestroy() { // À̺¥Æ® ±¸µ¶ ÇØÁ¦ // OnDragStateChanged -= ... } }