using System; using System.Collections.Generic; using System.Linq; using Managers; using UnityEngine; namespace UI { public class SkillTreeUI : FullScreenUI { public SkillTreePageUI skillTreePageUIPrefab; public Transform skillTreePageUIParent; // 用于承载 SkillTreePageUI 实例的 Transform public List skillTreePages = new List(); private int _index = 0; public int Index { get => _index; set { _index = value; if (skillTreePages.Count == 0) return; while (_index < 0) { _index += skillTreePages.Count; } while (_index >= skillTreePageUIParent.childCount) { _index -= skillTreePageUIParent.childCount; } } } public SkillTreePageUI FocusedSkillTreePage => skillTreePages.Any() ? skillTreePages[Index] : null; private void Start() { var pageList = SkillTreeManager.Instance.GetAllTag(); if (pageList == null) return; foreach (var page in pageList) { var pageUI = Instantiate(skillTreePageUIPrefab, skillTreePageUIParent); pageUI.GenerateAndLayoutAllSkillTrees(page); skillTreePages.Add(pageUI); pageUI.gameObject.SetActive(false); } FocusedSkillTreePage.gameObject.SetActive(true); } public void OnLeft() { FocusedSkillTreePage.gameObject.SetActive(false); Index--; FocusedSkillTreePage.gameObject.SetActive(true); } public void OnRight() { FocusedSkillTreePage.gameObject.SetActive(false); Index++; FocusedSkillTreePage.gameObject.SetActive(true); } } }