UTKProperyWIndow 수정 중
This commit is contained in:
@@ -166,7 +166,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
|
||||
m_PanelSettings: {fileID: 11400000, guid: 5ad7007b08a97b54d927c352279a18b6, type: 2}
|
||||
m_ParentUI: {fileID: 0}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 9d3024917e8d4b546943ec3f7b03d9e4, type: 3}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 3cdfb535a2976ab48975316e1f7196d9, type: 3}
|
||||
m_SortingOrder: 0
|
||||
m_Position: 0
|
||||
m_WorldSpaceSizeMode: 1
|
||||
@@ -25,12 +25,19 @@ public class UTKAccordionListWindowSample : MonoBehaviour
|
||||
[Tooltip("UI를 표시할 UIDocument 컴포넌트")]
|
||||
public UIDocument? uiDocument;
|
||||
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("드래그 시 고스트 이미지 표시 여부")]
|
||||
private bool showDragGhost = true;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("시작 시 적용할 테마")]
|
||||
private UTKTheme initialTheme = UTKTheme.Dark;
|
||||
|
||||
private UTKToggle _themeToggle;
|
||||
|
||||
/// <summary>UTKAccordionListWindow 인스턴스</summary>
|
||||
private UTKAccordionListWindow? _accordionWindow;
|
||||
private UTKAccordionListWindow _accordionWindow;
|
||||
|
||||
/// <summary>드롭 위치 (스크린 좌표)</summary>
|
||||
private Vector2 _lastDropScreenPosition;
|
||||
@@ -44,6 +51,8 @@ public class UTKAccordionListWindowSample : MonoBehaviour
|
||||
/// <summary>드래그 중 리스트 영역 밖에 있는지 여부</summary>
|
||||
private bool _isOutsideListArea;
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Unity 라이프사이클
|
||||
@@ -51,30 +60,49 @@ public class UTKAccordionListWindowSample : MonoBehaviour
|
||||
private void Start()
|
||||
{
|
||||
// UIDocument 참조 확인
|
||||
uiDocument ??= GetComponent<UIDocument>();
|
||||
if (uiDocument == null)
|
||||
var doc = GetComponent<UIDocument>();
|
||||
if (doc == null)
|
||||
{
|
||||
Debug.LogError("[UTKAccordionListWindowSample] UIDocument가 할당되지 않았습니다.");
|
||||
Debug.LogError("UIDocument가 할당되지 않았습니다.");
|
||||
return;
|
||||
}
|
||||
uiDocument = doc;
|
||||
|
||||
var toggle = uiDocument.rootVisualElement.Q<UTKToggle>("toggle");
|
||||
if (toggle == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKToggle을 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_themeToggle = toggle;
|
||||
|
||||
var window = uiDocument.rootVisualElement.Q<UTKAccordionListWindow>("window");
|
||||
if (window == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKAccordionListWindow를 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_accordionWindow = window;
|
||||
|
||||
UTKThemeManager.Instance.RegisterRoot(uiDocument.rootVisualElement);
|
||||
UTKThemeManager.Instance.SetTheme(initialTheme);
|
||||
|
||||
_themeToggle.OnValueChanged += (isOn) =>
|
||||
{
|
||||
UTKThemeManager.Instance.SetTheme(!isOn ? UTKTheme.Dark : UTKTheme.Light);
|
||||
};
|
||||
|
||||
// UTKAccordionListWindow 인스턴스 생성 및 추가
|
||||
_accordionWindow = new UTKAccordionListWindow();
|
||||
_accordionWindow.ShowDragGhost = showDragGhost;
|
||||
_accordionWindow.Title = "ACCORDION";
|
||||
_accordionWindow.ShowCloseButton = true;
|
||||
|
||||
uiDocument.rootVisualElement.Add(_accordionWindow);
|
||||
|
||||
// 테스트 데이터 생성
|
||||
CreateTestData();
|
||||
|
||||
// 이벤트 핸들러 등록
|
||||
RegisterEventHandlers();
|
||||
|
||||
// 윈도우 표시
|
||||
_accordionWindow.Show();
|
||||
|
||||
Debug.Log("[UTKAccordionListWindowSample] 초기화 완료");
|
||||
}
|
||||
|
||||
|
||||
6
Assets/Sample/UIToolkit/UTKAccordionListWindowUXML.uxml
Normal file
6
Assets/Sample/UIToolkit/UTKAccordionListWindowUXML.uxml
Normal file
@@ -0,0 +1,6 @@
|
||||
<UXML xmlns="UnityEngine.UIElements" xmlns:utk="UVC.UIToolkit" editor-extension-mode="False">
|
||||
<VisualElement style="width: 100%; height: 100%;">
|
||||
<utk:UTKAccordionListWindow name="window" />
|
||||
<utk:UTKToggle name="toggle" label="테마 변경" style="position: absolute; top: 10px; right: 10px;" />
|
||||
</VisualElement>
|
||||
</UXML>
|
||||
10
Assets/Sample/UIToolkit/UTKAccordionListWindowUXML.uxml.meta
Normal file
10
Assets/Sample/UIToolkit/UTKAccordionListWindowUXML.uxml.meta
Normal file
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3cdfb535a2976ab48975316e1f7196d9
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||
@@ -166,7 +166,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
|
||||
m_PanelSettings: {fileID: 11400000, guid: 5ad7007b08a97b54d927c352279a18b6, type: 2}
|
||||
m_ParentUI: {fileID: 0}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 5ad0294e546cb18409d368046997e670, type: 3}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 16e3bccfa967f4249856b24387b10b0a, type: 3}
|
||||
m_SortingOrder: 1
|
||||
m_Position: 0
|
||||
m_WorldSpaceSizeMode: 1
|
||||
@@ -188,6 +188,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::UTKColorPickerSample
|
||||
_uiDocument: {fileID: 1097328754}
|
||||
initialTheme: 0
|
||||
--- !u!1 &1331954412
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -15,6 +15,12 @@ namespace UVC.Sample.UIToolkit
|
||||
{
|
||||
[SerializeField] private UIDocument? _uiDocument;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("시작 시 적용할 테마")]
|
||||
private UTKTheme initialTheme = UTKTheme.Dark;
|
||||
|
||||
private UTKToggle _themeToggle;
|
||||
|
||||
private VisualElement? _root;
|
||||
private VisualElement? _colorPreview;
|
||||
private Label? _colorLabel;
|
||||
@@ -25,11 +31,30 @@ namespace UVC.Sample.UIToolkit
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (_uiDocument == null)
|
||||
// UIDocument 참조 확인
|
||||
var doc = GetComponent<UIDocument>();
|
||||
if (doc == null)
|
||||
{
|
||||
Debug.LogError("UIDocument is not assigned!");
|
||||
Debug.LogError("UIDocument가 할당되지 않았습니다.");
|
||||
return;
|
||||
}
|
||||
_uiDocument = doc;
|
||||
|
||||
var toggle = _uiDocument.rootVisualElement.Q<UTKToggle>("toggle");
|
||||
if (toggle == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKToggle을 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_themeToggle = toggle;
|
||||
|
||||
UTKThemeManager.Instance.RegisterRoot(_uiDocument.rootVisualElement);
|
||||
UTKThemeManager.Instance.SetTheme(initialTheme);
|
||||
|
||||
_themeToggle.OnValueChanged += (isOn) =>
|
||||
{
|
||||
UTKThemeManager.Instance.SetTheme(!isOn ? UTKTheme.Dark : UTKTheme.Light);
|
||||
};
|
||||
|
||||
_root = _uiDocument.rootVisualElement;
|
||||
CreateSampleUI();
|
||||
|
||||
5
Assets/Sample/UIToolkit/UTKColorPickerUXML.uxml
Normal file
5
Assets/Sample/UIToolkit/UTKColorPickerUXML.uxml
Normal file
@@ -0,0 +1,5 @@
|
||||
<UXML xmlns="UnityEngine.UIElements" xmlns:utk="UVC.UIToolkit" editor-extension-mode="False">
|
||||
<VisualElement style="width: 100%; height: 100%;">
|
||||
<utk:UTKToggle name="toggle" label="테마 변경" style="position: absolute; top: 10px; right: 10px;" />
|
||||
</VisualElement>
|
||||
</UXML>
|
||||
10
Assets/Sample/UIToolkit/UTKColorPickerUXML.uxml.meta
Normal file
10
Assets/Sample/UIToolkit/UTKColorPickerUXML.uxml.meta
Normal file
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 16e3bccfa967f4249856b24387b10b0a
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||
@@ -131,7 +131,7 @@ GameObject:
|
||||
- component: {fileID: 1097328754}
|
||||
- component: {fileID: 1097328755}
|
||||
m_Layer: 0
|
||||
m_Name: UTKComponentListWindowSample
|
||||
m_Name: Sample
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -166,7 +166,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
|
||||
m_PanelSettings: {fileID: 11400000, guid: 5ad7007b08a97b54d927c352279a18b6, type: 2}
|
||||
m_ParentUI: {fileID: 0}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 9d3024917e8d4b546943ec3f7b03d9e4, type: 3}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: ac1b05d63bb20cd468b39a2802e42701, type: 3}
|
||||
m_SortingOrder: 0
|
||||
m_Position: 0
|
||||
m_WorldSpaceSizeMode: 1
|
||||
@@ -188,6 +188,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::UTKComponentListWindowSample
|
||||
uiDocument: {fileID: 1097328754}
|
||||
initialTheme: 0
|
||||
--- !u!1 &1331954412
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -12,36 +12,71 @@ public class UTKComponentListWindowSample : MonoBehaviour
|
||||
[SerializeField]
|
||||
public UIDocument uiDocument;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("시작 시 적용할 테마")]
|
||||
private UTKTheme initialTheme = UTKTheme.Dark;
|
||||
|
||||
private UTKToggle _themeToggle;
|
||||
|
||||
|
||||
private UTKComponentListWindow listWindow;
|
||||
private UTKComponentTabListWindow tabListWindow;
|
||||
|
||||
|
||||
void Start()
|
||||
{
|
||||
uiDocument ??= GetComponent<UIDocument>();
|
||||
// UIDocument 참조 확인
|
||||
var doc = GetComponent<UIDocument>();
|
||||
if (doc == null)
|
||||
{
|
||||
Debug.LogError("UIDocument가 할당되지 않았습니다.");
|
||||
return;
|
||||
}
|
||||
uiDocument = doc;
|
||||
|
||||
var toggle = uiDocument.rootVisualElement.Q<UTKToggle>("toggle");
|
||||
if (toggle == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKToggle을 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_themeToggle = toggle;
|
||||
|
||||
// UTKComponentTabListWindow 사용 (탭 기능 포함)
|
||||
tabListWindow = new UTKComponentTabListWindow();
|
||||
tabListWindow.style.marginLeft = 500;
|
||||
uiDocument.rootVisualElement.Add(tabListWindow);
|
||||
var window = uiDocument.rootVisualElement.Q<UTKComponentListWindow>("window");
|
||||
if (window == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKComponentListWindow를 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
listWindow = window;
|
||||
|
||||
// 테스트용 계층적 트리 데이터 생성
|
||||
CreateTabListTestData();
|
||||
var tabWindow = uiDocument.rootVisualElement.Q<UTKComponentTabListWindow>("tabWindow");
|
||||
if (tabWindow == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKComponentTabListWindow를 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
tabListWindow = tabWindow;
|
||||
|
||||
UTKThemeManager.Instance.RegisterRoot(uiDocument.rootVisualElement);
|
||||
UTKThemeManager.Instance.SetTheme(initialTheme);
|
||||
|
||||
_themeToggle.OnValueChanged += (isOn) =>
|
||||
{
|
||||
UTKThemeManager.Instance.SetTheme(!isOn ? UTKTheme.Dark : UTKTheme.Light);
|
||||
};
|
||||
|
||||
// 이벤트 핸들러 등록
|
||||
RegisterTabListEventHandlers();
|
||||
// 테스트용 계층적 트리 데이터 생성
|
||||
CreateTabListTestData();
|
||||
|
||||
// UTKComponentListWindow 사용 (기본)
|
||||
listWindow = new UTKComponentListWindow();
|
||||
uiDocument.rootVisualElement.Add(listWindow);
|
||||
// 이벤트 핸들러 등록
|
||||
RegisterTabListEventHandlers();
|
||||
|
||||
// 테스트용 계층적 트리 데이터 생성
|
||||
CreateTestData();
|
||||
// 테스트용 계층적 트리 데이터 생성
|
||||
CreateTestData();
|
||||
|
||||
// 이벤트 핸들러 등록
|
||||
RegisterEventHandlers();
|
||||
// 이벤트 핸들러 등록
|
||||
RegisterEventHandlers();
|
||||
|
||||
}
|
||||
|
||||
|
||||
7
Assets/Sample/UIToolkit/UTKComponentListWindowUXML.uxml
Normal file
7
Assets/Sample/UIToolkit/UTKComponentListWindowUXML.uxml
Normal file
@@ -0,0 +1,7 @@
|
||||
<UXML xmlns="UnityEngine.UIElements" xmlns:utk="UVC.UIToolkit" editor-extension-mode="False">
|
||||
<VisualElement style="width: 100%; height: 100%;">
|
||||
<utk:UTKComponentListWindow name="window" />
|
||||
<utk:UTKComponentTabListWindow name="tabWindow" style="position: absolute; top: 0; left: 400px;" />
|
||||
<utk:UTKToggle name="toggle" label="테마 변경" style="position: absolute; top: 10px; right: 10px;" />
|
||||
</VisualElement>
|
||||
</UXML>
|
||||
10
Assets/Sample/UIToolkit/UTKComponentListWindowUXML.uxml.meta
Normal file
10
Assets/Sample/UIToolkit/UTKComponentListWindowUXML.uxml.meta
Normal file
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ac1b05d63bb20cd468b39a2802e42701
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||
@@ -166,7 +166,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
|
||||
m_PanelSettings: {fileID: 11400000, guid: 5ad7007b08a97b54d927c352279a18b6, type: 2}
|
||||
m_ParentUI: {fileID: 0}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 5ad0294e546cb18409d368046997e670, type: 3}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 532efe3b9768cdf4e86046f72462a043, type: 3}
|
||||
m_SortingOrder: 10
|
||||
m_Position: 0
|
||||
m_WorldSpaceSizeMode: 1
|
||||
@@ -188,6 +188,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::UTKDatePickerSample
|
||||
_uiDocument: {fileID: 1097328754}
|
||||
initialTheme: 0
|
||||
--- !u!1 &1331954412
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -16,6 +16,12 @@ namespace UVC.Sample.UIToolkit
|
||||
{
|
||||
[SerializeField] private UIDocument? _uiDocument;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("시작 시 적용할 테마")]
|
||||
private UTKTheme initialTheme = UTKTheme.Dark;
|
||||
|
||||
private UTKToggle _themeToggle;
|
||||
|
||||
private VisualElement? _root;
|
||||
private Label? _dateLabel;
|
||||
private Label? _dateTimeLabel;
|
||||
@@ -29,11 +35,30 @@ namespace UVC.Sample.UIToolkit
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (_uiDocument == null)
|
||||
// UIDocument 참조 확인
|
||||
var doc = GetComponent<UIDocument>();
|
||||
if (doc == null)
|
||||
{
|
||||
Debug.LogError("UIDocument is not assigned!");
|
||||
Debug.LogError("UIDocument가 할당되지 않았습니다.");
|
||||
return;
|
||||
}
|
||||
_uiDocument = doc;
|
||||
|
||||
var toggle = _uiDocument.rootVisualElement.Q<UTKToggle>("toggle");
|
||||
if (toggle == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKToggle을 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_themeToggle = toggle;
|
||||
|
||||
UTKThemeManager.Instance.RegisterRoot(_uiDocument.rootVisualElement);
|
||||
UTKThemeManager.Instance.SetTheme(initialTheme);
|
||||
|
||||
_themeToggle.OnValueChanged += (isOn) =>
|
||||
{
|
||||
UTKThemeManager.Instance.SetTheme(!isOn ? UTKTheme.Dark : UTKTheme.Light);
|
||||
};
|
||||
|
||||
bool success = LocalizationManager.Instance.LoadDefaultLocalizationData("ko", "locale.json");
|
||||
Debug.Log($"LocalizationManager: LoadDefaultLocalizationData success: {success}");
|
||||
|
||||
5
Assets/Sample/UIToolkit/UTKDatePickerUXML.uxml
Normal file
5
Assets/Sample/UIToolkit/UTKDatePickerUXML.uxml
Normal file
@@ -0,0 +1,5 @@
|
||||
<UXML xmlns="UnityEngine.UIElements" xmlns:utk="UVC.UIToolkit" editor-extension-mode="False">
|
||||
<VisualElement style="width: 100%; height: 100%;">
|
||||
<utk:UTKToggle name="toggle" label="테마 변경" style="position: absolute; top: 10px; right: 10px;" />
|
||||
</VisualElement>
|
||||
</UXML>
|
||||
10
Assets/Sample/UIToolkit/UTKDatePickerUXML.uxml.meta
Normal file
10
Assets/Sample/UIToolkit/UTKDatePickerUXML.uxml.meta
Normal file
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 532efe3b9768cdf4e86046f72462a043
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||
@@ -166,7 +166,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
|
||||
m_PanelSettings: {fileID: 11400000, guid: 5ad7007b08a97b54d927c352279a18b6, type: 2}
|
||||
m_ParentUI: {fileID: 0}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 9d3024917e8d4b546943ec3f7b03d9e4, type: 3}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 5b85ca454c8b3e8408b994aa6e24b2d0, type: 3}
|
||||
m_SortingOrder: 0
|
||||
m_Position: 0
|
||||
m_WorldSpaceSizeMode: 1
|
||||
@@ -28,6 +28,12 @@ public class UTKImageListWindowSample : MonoBehaviour
|
||||
[Tooltip("드래그 시 이미지가 커서를 따라다니도록 설정")]
|
||||
private bool dragImageFollowCursor = true;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("시작 시 적용할 테마")]
|
||||
private UTKTheme initialTheme = UTKTheme.Dark;
|
||||
|
||||
private UTKToggle _themeToggle;
|
||||
|
||||
/// <summary>UTKImageListWindow 인스턴스</summary>
|
||||
private UTKImageListWindow? _imageListWindow;
|
||||
|
||||
@@ -50,20 +56,42 @@ public class UTKImageListWindowSample : MonoBehaviour
|
||||
private void Start()
|
||||
{
|
||||
// UIDocument 참조 확인
|
||||
uiDocument ??= GetComponent<UIDocument>();
|
||||
if (uiDocument == null)
|
||||
var doc = GetComponent<UIDocument>();
|
||||
if (doc == null)
|
||||
{
|
||||
Debug.LogError("[UTKImageListWindowSample] UIDocument가 할당되지 않았습니다.");
|
||||
Debug.LogError("UIDocument가 할당되지 않았습니다.");
|
||||
return;
|
||||
}
|
||||
uiDocument = doc;
|
||||
|
||||
var toggle = uiDocument.rootVisualElement.Q<UTKToggle>("toggle");
|
||||
if (toggle == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKToggle을 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_themeToggle = toggle;
|
||||
|
||||
var window = uiDocument.rootVisualElement.Q<UTKImageListWindow>("window");
|
||||
if (window == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKImageListWindow를 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_imageListWindow = window;
|
||||
|
||||
// UTKImageListWindow 인스턴스 생성 및 추가
|
||||
_imageListWindow = new UTKImageListWindow();
|
||||
_imageListWindow.DragImageFollowCursor = dragImageFollowCursor;
|
||||
_imageListWindow.Title = "LIBRARY";
|
||||
_imageListWindow.ShowCloseButton = true;
|
||||
|
||||
uiDocument.rootVisualElement.Add(_imageListWindow);
|
||||
UTKThemeManager.Instance.RegisterRoot(uiDocument.rootVisualElement);
|
||||
UTKThemeManager.Instance.SetTheme(initialTheme);
|
||||
|
||||
_themeToggle.OnValueChanged += (isOn) =>
|
||||
{
|
||||
UTKThemeManager.Instance.SetTheme(!isOn ? UTKTheme.Dark : UTKTheme.Light);
|
||||
};
|
||||
|
||||
// 테스트 데이터 생성
|
||||
CreateTestData();
|
||||
|
||||
6
Assets/Sample/UIToolkit/UTKImageListWindowUXML.uxml
Normal file
6
Assets/Sample/UIToolkit/UTKImageListWindowUXML.uxml
Normal file
@@ -0,0 +1,6 @@
|
||||
<UXML xmlns="UnityEngine.UIElements" xmlns:utk="UVC.UIToolkit" editor-extension-mode="False">
|
||||
<VisualElement style="width: 100%; height: 100%;">
|
||||
<utk:UTKImageListWindow name="window" />
|
||||
<utk:UTKToggle name="toggle" label="테마 변경" style="position: absolute; top: 10px; right: 10px;" />
|
||||
</VisualElement>
|
||||
</UXML>
|
||||
10
Assets/Sample/UIToolkit/UTKImageListWindowUXML.uxml.meta
Normal file
10
Assets/Sample/UIToolkit/UTKImageListWindowUXML.uxml.meta
Normal file
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5b85ca454c8b3e8408b994aa6e24b2d0
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||
@@ -166,7 +166,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
|
||||
m_PanelSettings: {fileID: 11400000, guid: 5ad7007b08a97b54d927c352279a18b6, type: 2}
|
||||
m_ParentUI: {fileID: 0}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 9d3024917e8d4b546943ec3f7b03d9e4, type: 3}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: ad778edbbf3d39349bcbcefeb341584c, type: 3}
|
||||
m_SortingOrder: 0
|
||||
m_Position: 0
|
||||
m_WorldSpaceSizeMode: 1
|
||||
@@ -188,6 +188,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::UVC.Sample.UIToolkit.UTKPropertyWindowSample
|
||||
_uiDocument: {fileID: 1097328754}
|
||||
initialTheme: 0
|
||||
--- !u!1 &1331954412
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -13,17 +13,50 @@ namespace UVC.Sample.UIToolkit
|
||||
/// </summary>
|
||||
public class UTKPropertyWindowSample : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private UIDocument? _uiDocument;
|
||||
[SerializeField] private UIDocument _uiDocument;
|
||||
|
||||
private UTKPropertyWindow? _propertyWindow;
|
||||
[SerializeField]
|
||||
[Tooltip("시작 시 적용할 테마")]
|
||||
private UTKTheme initialTheme = UTKTheme.Dark;
|
||||
|
||||
private UTKToggle _themeToggle;
|
||||
|
||||
private UTKPropertyWindow _propertyWindow;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (_uiDocument == null)
|
||||
// UIDocument 참조 확인
|
||||
var doc = GetComponent<UIDocument>();
|
||||
if (doc == null)
|
||||
{
|
||||
Debug.LogError("UIDocument is not assigned!");
|
||||
Debug.LogError("UIDocument가 할당되지 않았습니다.");
|
||||
return;
|
||||
}
|
||||
_uiDocument = doc;
|
||||
|
||||
var toggle = _uiDocument.rootVisualElement.Q<UTKToggle>("toggle");
|
||||
if (toggle == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKToggle을 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_themeToggle = toggle;
|
||||
|
||||
var window = _uiDocument.rootVisualElement.Q<UTKPropertyWindow>("window");
|
||||
if (window == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKPropertyWindow를 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_propertyWindow = window;
|
||||
|
||||
UTKThemeManager.Instance.RegisterRoot(_uiDocument.rootVisualElement);
|
||||
UTKThemeManager.Instance.SetTheme(initialTheme);
|
||||
|
||||
_themeToggle.OnValueChanged += (isOn) =>
|
||||
{
|
||||
UTKThemeManager.Instance.SetTheme(!isOn ? UTKTheme.Dark : UTKTheme.Light);
|
||||
};
|
||||
|
||||
var root = _uiDocument.rootVisualElement;
|
||||
CreateSamplePropertyWindow(root);
|
||||
@@ -31,7 +64,6 @@ namespace UVC.Sample.UIToolkit
|
||||
|
||||
private void CreateSamplePropertyWindow(VisualElement root)
|
||||
{
|
||||
_propertyWindow = new UTKPropertyWindow("Sample Properties");
|
||||
|
||||
// 세로 높이를 부모에 맞게 꽉 채우기
|
||||
_propertyWindow.style.position = Position.Absolute;
|
||||
@@ -47,7 +79,7 @@ namespace UVC.Sample.UIToolkit
|
||||
|
||||
_propertyWindow.OnPropertyValueChanged += args =>
|
||||
{
|
||||
Debug.Log($"Property Changed: {args.PropertyName} ({args.PropertyType}) = {args.NewValue}");
|
||||
Debug.Log($"Property Changed: {args.PropertyId} {args.PropertyName} ({args.PropertyType}) = {args.NewValue}");
|
||||
};
|
||||
|
||||
// 샘플 데이터 생성
|
||||
|
||||
6
Assets/Sample/UIToolkit/UTKPropertyWindowUXML.uxml
Normal file
6
Assets/Sample/UIToolkit/UTKPropertyWindowUXML.uxml
Normal file
@@ -0,0 +1,6 @@
|
||||
<UXML xmlns="UnityEngine.UIElements" xmlns:utk="UVC.UIToolkit" editor-extension-mode="False">
|
||||
<VisualElement style="width: 100%; height: 100%;">
|
||||
<utk:UTKPropertyWindow name="window" />
|
||||
<utk:UTKToggle name="toggle" label="테마 변경" style="position: absolute; top: 10px; left: 10px;" />
|
||||
</VisualElement>
|
||||
</UXML>
|
||||
10
Assets/Sample/UIToolkit/UTKPropertyWindowUXML.uxml.meta
Normal file
10
Assets/Sample/UIToolkit/UTKPropertyWindowUXML.uxml.meta
Normal file
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad778edbbf3d39349bcbcefeb341584c
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||
@@ -555,6 +555,45 @@ slider.IsEnabled = false;",
|
||||
<!-- 비활성화 -->
|
||||
<utk:UTKSlider label=""잠금"" is-enabled=""false"" value=""30"" />
|
||||
|
||||
</ui:UXML>");
|
||||
}
|
||||
|
||||
private void InitializeSliderIntSample(VisualElement root)
|
||||
{
|
||||
SetCodeSamples(root,
|
||||
csharpCode: @"// 기본 정수 슬라이더
|
||||
var slider = new UTKSliderInt();
|
||||
slider.label = ""레벨""; // Unity SliderInt의 label 프로퍼티 (소문자)
|
||||
slider.lowValue = 1;
|
||||
slider.highValue = 10;
|
||||
slider.value = 5;
|
||||
slider.OnValueChanged += (value) => Debug.Log($""레벨: {value}"");
|
||||
|
||||
// 생성자로 생성
|
||||
var levelSlider = new UTKSliderInt(""레벨"", 1, 10, 5);
|
||||
|
||||
// 수량 슬라이더
|
||||
var quantitySlider = new UTKSliderInt(""수량"", 0, 100, 25);
|
||||
quantitySlider.OnValueChanged += (value) => Debug.Log($""수량: {value}"");
|
||||
|
||||
// 페이지 선택
|
||||
var pageSlider = new UTKSliderInt(""페이지"", 1, 100, 1);
|
||||
pageSlider.OnValueChanged += (page) => LoadPage(page);
|
||||
|
||||
// 비활성화
|
||||
slider.IsEnabled = false;",
|
||||
uxmlCode: @"<!-- 네임스페이스 선언 -->
|
||||
<ui:UXML xmlns:utk=""UVC.UIToolkit"">
|
||||
|
||||
<!-- 기본 정수 슬라이더 -->
|
||||
<utk:UTKSliderInt label=""레벨"" low-value=""1"" high-value=""10"" value=""5"" />
|
||||
|
||||
<!-- 큰 범위 -->
|
||||
<utk:UTKSliderInt label=""수량"" low-value=""0"" high-value=""100"" value=""25"" />
|
||||
|
||||
<!-- 비활성화 -->
|
||||
<utk:UTKSliderInt label=""잠금"" is-enabled=""false"" value=""30"" />
|
||||
|
||||
</ui:UXML>");
|
||||
}
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ public partial class UTKStyleGuideSample : MonoBehaviour
|
||||
["UTKNumberStepper"] = "UIToolkit/Sample/Input/UTKNumberStepperSample",
|
||||
// Slider
|
||||
["UTKSlider"] = "UIToolkit/Sample/Slider/UTKSliderSample",
|
||||
["UTKSliderInt"] = "UIToolkit/Sample/Slider/UTKSliderIntSample",
|
||||
["UTKMinMaxSlider"] = "UIToolkit/Sample/Slider/UTKMinMaxSliderSample",
|
||||
["UTKProgressBar"] = "UIToolkit/Sample/Slider/UTKProgressBarSample",
|
||||
// Dropdown
|
||||
@@ -110,7 +111,7 @@ public partial class UTKStyleGuideSample : MonoBehaviour
|
||||
["Icon"] = new[] { "UTKMaterialIcons", "UTKImageIcons", "UTKImage" },
|
||||
["Button"] = new[] { "UTKButton", "UTKCheckBox", "UTKToggle", "UTKRadioButton", "UTKToggleButtonGroup" },
|
||||
["Input"] = new[] { "UTKInputField", "UTKIntegerField", "UTKLongField", "UTKFloatField", "UTKDoubleField", "UTKVector2Field", "UTKVector3Field", "UTKVector4Field", "UTKRectField", "UTKBoundsField", "UTKNumberStepper" },
|
||||
["Slider"] = new[] { "UTKSlider", "UTKMinMaxSlider", "UTKProgressBar" },
|
||||
["Slider"] = new[] { "UTKSlider", "UTKSliderInt", "UTKMinMaxSlider", "UTKProgressBar" },
|
||||
["Dropdown"] = new[] { "UTKDropdown", "UTKEnumDropDown" },
|
||||
["Label"] = new[] { "UTKLabel", "UTKHelpBox" },
|
||||
["List"] = new[] { "UTKListView", "UTKTreeView", "UTKMultiColumnListView", "UTKMultiColumnTreeView", "UTKFoldout", "UTKScrollView" },
|
||||
@@ -468,6 +469,9 @@ public partial class UTKStyleGuideSample : MonoBehaviour
|
||||
case "UTKSlider":
|
||||
InitializeSliderSample(root);
|
||||
break;
|
||||
case "UTKSliderInt":
|
||||
InitializeSliderIntSample(root);
|
||||
break;
|
||||
case "UTKMinMaxSlider":
|
||||
InitializeMinMaxSliderSample(root);
|
||||
break;
|
||||
|
||||
@@ -131,7 +131,7 @@ GameObject:
|
||||
- component: {fileID: 1097328754}
|
||||
- component: {fileID: 1097328753}
|
||||
m_Layer: 0
|
||||
m_Name: UTKTreeListWindowSample
|
||||
m_Name: Sample
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -165,6 +165,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::UTKTreeListWindowSample
|
||||
uiDocument: {fileID: 1097328754}
|
||||
initialTheme: 0
|
||||
--- !u!114 &1097328754
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -179,7 +180,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument
|
||||
m_PanelSettings: {fileID: 11400000, guid: 5ad7007b08a97b54d927c352279a18b6, type: 2}
|
||||
m_ParentUI: {fileID: 0}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 9d3024917e8d4b546943ec3f7b03d9e4, type: 3}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 775bcf7c96049ed4798a80a09093b776, type: 3}
|
||||
m_SortingOrder: 0
|
||||
m_Position: 0
|
||||
m_WorldSpaceSizeMode: 1
|
||||
@@ -12,23 +12,49 @@ public class UTKTreeListWindowSample : MonoBehaviour
|
||||
[SerializeField]
|
||||
public UIDocument uiDocument;
|
||||
|
||||
[SerializeField]
|
||||
[Tooltip("시작 시 적용할 테마")]
|
||||
private UTKTheme initialTheme = UTKTheme.Dark;
|
||||
|
||||
private UTKToggle _themeToggle;
|
||||
|
||||
private UTKTreeListWindow treeListWindow;
|
||||
|
||||
void Start()
|
||||
{
|
||||
|
||||
uiDocument ??= GetComponent<UIDocument>();
|
||||
|
||||
// UIDocument에서 UTKTreeListWindow 인스턴스 생성해서 할당
|
||||
treeListWindow = new UTKTreeListWindow();
|
||||
uiDocument.rootVisualElement.Add(treeListWindow);
|
||||
|
||||
// UTKTreeListWindow가 할당되지 않은 경우 경고
|
||||
if (treeListWindow == null)
|
||||
// UIDocument 참조 확인
|
||||
var doc = GetComponent<UIDocument>();
|
||||
if (doc == null)
|
||||
{
|
||||
Debug.LogWarning("[UTKTreeListWindowSample] treeListWindow가 할당되지 않았습니다.");
|
||||
Debug.LogError("UIDocument가 할당되지 않았습니다.");
|
||||
return;
|
||||
}
|
||||
uiDocument = doc;
|
||||
|
||||
var toggle = uiDocument.rootVisualElement.Q<UTKToggle>("toggle");
|
||||
if (toggle == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKToggle을 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
_themeToggle = toggle;
|
||||
|
||||
var window = uiDocument.rootVisualElement.Q<UTKTreeListWindow>("window");
|
||||
if (window == null)
|
||||
{
|
||||
Debug.LogError("UXML에서 UTKTreeListWindow를 찾을 수 없습니다.");
|
||||
return;
|
||||
}
|
||||
treeListWindow = window;
|
||||
|
||||
UTKThemeManager.Instance.RegisterRoot(uiDocument.rootVisualElement);
|
||||
UTKThemeManager.Instance.SetTheme(initialTheme);
|
||||
|
||||
_themeToggle.OnValueChanged += (isOn) =>
|
||||
{
|
||||
UTKThemeManager.Instance.SetTheme(!isOn ? UTKTheme.Dark : UTKTheme.Light);
|
||||
};
|
||||
|
||||
// 테스트용 계층적 트리 데이터 생성
|
||||
CreateTestData();
|
||||
|
||||
6
Assets/Sample/UIToolkit/UTKTreeListWindowUXML.uxml
Normal file
6
Assets/Sample/UIToolkit/UTKTreeListWindowUXML.uxml
Normal file
@@ -0,0 +1,6 @@
|
||||
<UXML xmlns="UnityEngine.UIElements" xmlns:utk="UVC.UIToolkit" editor-extension-mode="False">
|
||||
<VisualElement style="width: 100%; height: 100%;">
|
||||
<utk:UTKTreeListWindow name="window" />
|
||||
<utk:UTKToggle name="toggle" label="테마 변경" style="position: absolute; top: 10px; right: 10px;" />
|
||||
</VisualElement>
|
||||
</UXML>
|
||||
10
Assets/Sample/UIToolkit/UTKTreeListWindowUXML.uxml.meta
Normal file
10
Assets/Sample/UIToolkit/UTKTreeListWindowUXML.uxml.meta
Normal file
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 775bcf7c96049ed4798a80a09093b776
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||
Reference in New Issue
Block a user