UIMenuItem.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEditor;
  4. using UnityEngine;
  5. using UnityEngine.UIElements;
  6. [CreateAssetMenu(fileName = "New Menu", menuName = "Own UI/New Menu", order = 1)]
  7. public class UIMenuItem : ScriptableObject {
  8. public string MenuText;
  9. public ScrollView MenuItemsList;
  10. public Button MenuName;
  11. public bool menuOpen = false;
  12. public PlacedObjectTypeSO.ObjectCategory category;
  13. public VisualTreeAsset buildableItemTemplate;
  14. public List<PlacedObjectTypeSO> BuildableItems { get; set; }
  15. private void OnEnable() {
  16. buildableItemTemplate = AssetDatabase.LoadAssetAtPath<VisualTreeAsset>("Assets/Scripts/UI/ItemDatabase/BuildableObjectTemplate.uxml");
  17. MenuItemsList = new ScrollView();
  18. MenuItemsList.style.visibility = Visibility.Hidden;
  19. }
  20. public void SetBuildableItems(List<PlacedObjectTypeSO> items) {
  21. BuildableItems = items;
  22. }
  23. internal List<TemplateContainer> GetBuildableItemsList() {
  24. List<TemplateContainer> result = new List<TemplateContainer>();
  25. foreach (PlacedObjectTypeSO item in BuildableItems) {
  26. TemplateContainer buildableItem = buildableItemTemplate.Instantiate();
  27. Button button = buildableItem.Q<Button>("BuildButton");
  28. button.text = item.ButtonText;
  29. button.RegisterCallback<ClickEvent>(ev => SetClickedItem(item));
  30. result.Add(buildableItem);
  31. }
  32. return result;
  33. }
  34. private void SetClickedItem(PlacedObjectTypeSO item) {
  35. GroundGridControllerScript.Instance.SetActiveObejctToPlace(item);
  36. }
  37. }