84 lines
2.1 KiB
C#
84 lines
2.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class NavPathController : MonoBehaviour
|
|
{
|
|
public List<GameObject> pathObjects = new List<GameObject>();
|
|
public List<string> pathSteps = new List<string>();
|
|
|
|
private int GetCurrentStep()
|
|
{
|
|
return pathSteps.IndexOf(GameManager.ProcessMgr.d_Scheme.CurrentProcess.CurrentSubProcess.CurrentSubProcessStep.subProcessStepName);
|
|
}
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
// 初始化时隐藏所有箭头
|
|
foreach (var obj in pathObjects)
|
|
{
|
|
if (obj != null)
|
|
{
|
|
obj.SetActive(false);
|
|
}
|
|
}
|
|
|
|
// 根据当前步骤显示对应的箭头(如果有的话)
|
|
UpdateArrowVisibility();
|
|
}
|
|
|
|
public void HideAllArrows()
|
|
{
|
|
// 隐藏所有箭头
|
|
foreach (var obj in pathObjects)
|
|
{
|
|
if (obj != null)
|
|
{
|
|
obj.SetActive(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study)
|
|
{
|
|
// 检查当前步骤是否改变,并更新箭头显示
|
|
int currentStep = GetCurrentStep();
|
|
if (currentStep > 0 && (currentStep - 1) < pathObjects.Count)
|
|
{
|
|
HideAllArrows();
|
|
|
|
// 显示当前步骤对应的箭头
|
|
pathObjects[currentStep - 1].SetActive(true);
|
|
}
|
|
else
|
|
{
|
|
HideAllArrows();
|
|
}
|
|
}
|
|
}
|
|
|
|
// 一个单独的方法用于更新箭头的可见性,可以在其他地方调用
|
|
private void UpdateArrowVisibility()
|
|
{
|
|
if (GameManager.RunModelMgr.ModeType == E_ModeType.Study)
|
|
{
|
|
int currentStep = GetCurrentStep();
|
|
if (currentStep > 0 && (currentStep - 1) < pathObjects.Count)
|
|
{
|
|
HideAllArrows();
|
|
|
|
// 显示当前步骤对应的箭头
|
|
pathObjects[currentStep - 1].SetActive(true);
|
|
}
|
|
else
|
|
{
|
|
HideAllArrows();
|
|
}
|
|
}
|
|
}
|
|
}
|