using ChivaXR; using Sirenix.OdinInspector; using System; using System.Collections.Generic; using UnityEngine; /// /// 步骤范围不能有重叠,如1-10,10-20。这样是不对的。 /// 应该是1-10,11-20. /// public class ProcessEvent_CameraQuickMove : MonoBehaviour { [ListDrawerSettings] public List DataList; int lastStepID = 1; void Awake() { ProcessManagement.Instance.processElementActiveEvent += ElementActiveEvent; } public void ElementActiveEvent(ProcessElement processElement) { int StepID = ProcessManagement.Instance.currentStepID; if (DataList.Count > 0) { int maxStep = 0; foreach(CameraQuickMoveItem item in DataList) { if (maxStep > item.MinStepID) continue; if ((lastStepID > item.MaxStepID || lastStepID < item.MinStepID)&& (StepID <= item.MaxStepID && StepID >= item.MinStepID)) { Camera.main.GetComponent().SetCameraState(item.TargetaPosition.position, item.TargetaPosition.eulerAngles); maxStep = item.MaxStepID; break; } } } lastStepID = StepID; } [Serializable] public class CameraQuickMoveItem { [LabelText("目标坐标")] public Transform TargetaPosition; [LabelText("最小范围")] public int MinStepID = 0; [LabelText("最大范围"),MinValue("MinStepID")] public int MaxStepID = 0; } }