SwapPart.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using UnityEngine;
  6. using UnityEngine.Experimental.U2D.Animation;
  7. using UnityEngine.UI;
  8. namespace Unity.U2D.Animation.Sample
  9. {
  10. [Serializable]
  11. public struct SwapOptionData
  12. {
  13. public Dropdown dropdown;
  14. public SpriteResolver spriteResolver;
  15. public string category;
  16. }
  17. public class SwapPart : MonoBehaviour
  18. {
  19. public SpriteLibraryAsset spriteLibraryAsset;
  20. public SwapOptionData[] swapOptionData;
  21. // Start is called before the first frame update
  22. void Start()
  23. {
  24. foreach (var swapOption in swapOptionData)
  25. {
  26. swapOption.dropdown.ClearOptions();
  27. var labels = spriteLibraryAsset.GetCategoryLabelNames(swapOption.category);
  28. var dropDownOption = new List<Dropdown.OptionData>(labels.Count());
  29. foreach (var label in labels)
  30. {
  31. dropDownOption.Add(new Dropdown.OptionData(label));
  32. }
  33. swapOption.dropdown.options = dropDownOption;
  34. swapOption.dropdown.onValueChanged.AddListener((x)=>
  35. {
  36. swapOption.spriteResolver.SetCategoryAndLabel(swapOption.category, swapOption.dropdown.options[x].text);
  37. });
  38. }
  39. }
  40. }
  41. }