123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using System;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.U2D.Animation;
- using UnityEngine.UIElements;
-
- namespace Unity.U2D.Animation.Sample
- {
- [Serializable]
- internal struct SwapOptionData
- {
- public SpriteResolver spriteResolver;
- public string category;
- }
-
- internal class PartSwapUI : MonoBehaviour
- {
- [SerializeField]
- SpriteLibrary m_SpriteLibrary;
-
- [SerializeField]
- SwapOptionData[] m_SwapOptionData;
-
- void OnEnable()
- {
- var uiDocument = GetComponent<UIDocument>();
- var description = uiDocument.rootVisualElement.Q<Label>("Description");
- description.text = "Different character parts can be swapped by changing the SpriteResolver's Label property on that part.";
-
- foreach (var swapOption in m_SwapOptionData)
- {
- var libraryAsset = m_SpriteLibrary.spriteLibraryAsset;
- var labels = libraryAsset.GetCategoryLabelNames(swapOption.category);
-
- var dropdown = uiDocument.rootVisualElement.Q<VisualElement>(swapOption.category).Q<DropdownField>();
- dropdown.choices = new List<string>(labels);
- dropdown.value = swapOption.spriteResolver.GetLabel();
- dropdown.RegisterValueChangedCallback(evt =>
- {
- swapOption.spriteResolver.SetCategoryAndLabel(swapOption.category, evt.newValue);
- });
- }
- }
- }
- }
|