Files
bansonic_beta_main/Assets/playerInfoDisplay/uLevel.cs
T
2026-06-25 11:48:56 +08:00

91 lines
2.3 KiB
C#

using UnityEngine;
using UnityEngine.UI;
public class uLevel : MonoBehaviour
{
public Text uLevelText;
public Slider uLevelSlider;
public Text uLProgress;
public Text uL_curr;
public Text uL_post;
public Button view_levelDetail;
public Button close_levelDetail;
[Header("uLevelPanel")]
public GameObject uLevelPanel;
public uLevel_skills uls;
[Header("so")]
public Player_SO pso;
private GameObject resolvedLevelPanelRoot;
private void Start()
{
if (pso == null)
pso = Resources.Load<Player_SO>("playerdata/playerData_uniqueData");
resolvedLevelPanelRoot = ResolveLevelPanelRoot();
if (resolvedLevelPanelRoot != null)
resolvedLevelPanelRoot.SetActive(false);
if (uls != null && pso != null)
uls.SetPlayerSo(pso);
if (view_levelDetail != null)
{
view_levelDetail.onClick.RemoveListener(OpenLevelDetailPanel);
view_levelDetail.onClick.AddListener(OpenLevelDetailPanel);
}
if (close_levelDetail != null)
{
close_levelDetail.onClick.RemoveListener(CloseLevelDetailPanel);
close_levelDetail.onClick.AddListener(CloseLevelDetailPanel);
}
}
private void OpenLevelDetailPanel()
{
GameObject panelRoot = ResolveLevelPanelRoot();
if (panelRoot == null)
return;
if (uls != null && pso != null)
uls.SetPlayerSo(pso);
panelRoot.SetActive(true);
}
private void CloseLevelDetailPanel()
{
GameObject panelRoot = ResolveLevelPanelRoot();
if (panelRoot != null)
panelRoot.SetActive(false);
}
private GameObject ResolveLevelPanelRoot()
{
if (uLevelPanel == null)
return null;
Transform current = uLevelPanel.transform;
GameObject highestInactiveAncestor = null;
while (current != null)
{
if (!current.gameObject.activeSelf)
{
highestInactiveAncestor = current.gameObject;
}
current = current.parent;
}
resolvedLevelPanelRoot = highestInactiveAncestor != null ? highestInactiveAncestor : uLevelPanel;
return resolvedLevelPanelRoot;
}
}