ProcessEvent_CameraQuickMove.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using ChivaXR;
  2. using Sirenix.OdinInspector;
  3. using System;
  4. using System.Collections.Generic;
  5. using UnityEngine;
  6. /// <summary>
  7. /// 步骤范围不能有重叠,如1-10,10-20。这样是不对的。
  8. /// 应该是1-10,11-20.
  9. /// </summary>
  10. public class ProcessEvent_CameraQuickMove : MonoBehaviour
  11. {
  12. [ListDrawerSettings]
  13. public List<CameraQuickMoveItem> DataList;
  14. int lastStepID = 1;
  15. void Awake()
  16. {
  17. ProcessManagement.Instance.processElementActiveEvent += ElementActiveEvent;
  18. }
  19. public void ElementActiveEvent(ProcessElement processElement)
  20. {
  21. int StepID = ProcessManagement.Instance.currentStepID;
  22. if (DataList.Count > 0)
  23. {
  24. int maxStep = 0;
  25. foreach(CameraQuickMoveItem item in DataList)
  26. {
  27. if (maxStep > item.MinStepID)
  28. continue;
  29. if ((lastStepID > item.MaxStepID || lastStepID < item.MinStepID)&&
  30. (StepID <= item.MaxStepID && StepID >= item.MinStepID))
  31. {
  32. Camera.main.GetComponent<RoamCameraController>().SetCameraState(item.TargetaPosition.position, item.TargetaPosition.eulerAngles);
  33. maxStep = item.MaxStepID;
  34. break;
  35. }
  36. }
  37. }
  38. lastStepID = StepID;
  39. }
  40. [Serializable]
  41. public class CameraQuickMoveItem
  42. {
  43. [LabelText("目标坐标")]
  44. public Transform TargetaPosition;
  45. [LabelText("最小范围")]
  46. public int MinStepID = 0;
  47. [LabelText("最大范围"),MinValue("MinStepID")]
  48. public int MaxStepID = 0;
  49. }
  50. }