No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

FullSkinSwapUI.cs 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.U2D.Animation;
  5. using UnityEngine.UIElements;
  6. namespace Unity.U2D.Animation.Sample
  7. {
  8. internal class FullSkinSwapUI : MonoBehaviour
  9. {
  10. [SerializeField]
  11. SpriteLibraryAsset[] m_SpriteLibraryAssets;
  12. [SerializeField]
  13. SpriteLibrary m_TargetSpriteLibrary;
  14. void OnEnable()
  15. {
  16. var uiDocument = GetComponent<UIDocument>();
  17. var description = uiDocument.rootVisualElement.Q<Label>("Description");
  18. description.text = "The entire character visual can be swapped by changing the SpriteLibraryAsset that is being used by the SpriteLibrary.";
  19. var choices = new List<string>(m_SpriteLibraryAssets.Length);
  20. var dropdownField = uiDocument.rootVisualElement.Q<DropdownField>();
  21. foreach (var spriteLibraryAsset in m_SpriteLibraryAssets)
  22. choices.Add(spriteLibraryAsset.name);
  23. dropdownField.choices = choices;
  24. dropdownField.value = m_SpriteLibraryAssets[0].name;
  25. dropdownField.RegisterValueChangedCallback(OnDropdownValueChanged);
  26. uiDocument.rootVisualElement.MarkDirtyRepaint();
  27. }
  28. void OnDropdownValueChanged(ChangeEvent<string> evt)
  29. {
  30. SpriteLibraryAsset selectedAsset = null;
  31. foreach (var asset in m_SpriteLibraryAssets)
  32. {
  33. if (asset.name == evt.newValue)
  34. {
  35. selectedAsset = asset;
  36. break;
  37. }
  38. }
  39. if (selectedAsset != null)
  40. m_TargetSpriteLibrary.spriteLibraryAsset = selectedAsset;
  41. }
  42. }
  43. }