Files
EnglewoodLAB/Assets/Scripts/UI/Studio/LibraryViewController.cs
2026-03-09 17:00:30 +09:00

52 lines
1.6 KiB
C#

using UnityEngine;
using UnityEngine.UIElements;
using System;
// MonoBehaviour를 상속받아 uGUI 시스템과 함께 동작합니다
[RequireComponent(typeof(UIDocument))]
public class LibraryViewController : MonoBehaviour
{
// 드래그 상태 외부 알림용 이벤트
public event Action<bool> OnDragStateChanged;
private VisualElement rootElement;
private ScrollView itemScrollView;
void Awake()
{
// 1. 같은 게임오브젝트에 있는 UIDocument에서 root VisualElement를 가져옵니다.
var uiDocument = GetComponent<UIDocument>();
rootElement = uiDocument.rootVisualElement;
// 2. UXML에 정의된 주요 요소들을 찾습니다.
itemScrollView = rootElement.Q<ScrollView>("item-scroll-view");
// 3. 라이브러리 데이터 로딩 및 UI 생성을 호출합니다.
LoadAndDisplayLibrary();
// 4. 드래그 로직을 담당할 Manipulator를 등록하고, OnDragStateChanged 이벤트를 발생시킵니다.
// 이 부분은 이전 답변의 LibraryView 내부 로직과 동일합니다.
}
// uGUI 버튼 등 외부에서 이 메서드를 호출하여 이벤트를 연결할 수 있습니다.
public void ConnectToCamera(Action<bool> 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 -= ...
}
}