| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UIElements;
- public class TabsController : MonoBehaviour
- {
- VisualElement root;
- private void OnEnable()
- {
- UIDocument menu = GetComponent<UIDocument>();
- root = menu.rootVisualElement;
- GetAllTabButtons().ForEach(RegisterButtonCallbacks);
- GetAllTabContents().ForEach(SetupContentRoot);
- }
- private void SetupContentRoot(VisualElement element)
- {
- BroadcastMessage("SetupTabContentRoot", element);
- }
- private void RegisterButtonCallbacks(Button b)
- {
- b.RegisterCallback<ClickEvent>(SetTabVisibleViaButton);
- }
- private void SetTabVisibleViaButton(ClickEvent evt)
- {
- Button b = evt.currentTarget as Button;
- VisualElement tabContent = GetAllTabContents().Where((VisualElement tabContent) => tabContent.name.Contains(b.name[..^3])).First();
- SetTabVisible(tabContent);
- BroadcastMessage("TabSelected", tabContent);
- }
- private void SetTabVisible(VisualElement tabToActivate)
- {
- UQueryBuilder<VisualElement> tabs = GetAllTabContents();
- tabs.Where((tab) => tab != tabToActivate).ForEach(t => t.style.display = DisplayStyle.None);
- tabToActivate.style.display = DisplayStyle.Flex;
- }
- private UQueryBuilder<VisualElement> GetAllTabContents()
- {
- return root.Query<VisualElement>(className: "tabContent");
- }
- private UQueryBuilder<Button> GetAllTabButtons()
- {
- return root.Query<Button>(className: "tabButton");
- }
- }
|