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