CombatSenceController.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using System;
  2. using System.Collections.Generic;
  3. using Fort23.Core;
  4. using GameLogic.CombatScenesTool;
  5. using Unity.AI.Navigation;
  6. using UnityEngine;
  7. namespace GameLogic.Combat.CombatTool
  8. {
  9. public class CombatSenceController: IDisposable
  10. {
  11. private AssetHandle scenesHandle;
  12. private AssetHandle scenesHandle2;
  13. public GameObject scenes1;
  14. public GameObject scenes2;
  15. private NavMeshSurface _navMeshSurface;
  16. private float zoff;
  17. private int index = 0;
  18. private List<CombatScenesConfig> _allCombatScenesConfigs = new List<CombatScenesConfig>();
  19. public CombatScenesConfig _currConfig;
  20. private int nextConfigIndex;
  21. public async CTask InitScenes()
  22. {
  23. CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
  24. cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>("Chapter01.prefab",
  25. delegate(AssetHandle handle)
  26. {
  27. scenesHandle = handle;
  28. scenes1 = scenesHandle.AssetObject<GameObject>();
  29. scenes1.SetActive(true);
  30. CombatScenesConfig combatScenesConfig = scenes1.GetComponent<CombatScenesConfig>();
  31. _allCombatScenesConfigs.Add(combatScenesConfig);
  32. }));
  33. cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>("Chapter02.prefab",
  34. delegate(AssetHandle handle)
  35. {
  36. scenesHandle2 = handle;
  37. scenes2 = scenesHandle2.AssetObject<GameObject>();
  38. scenes2.SetActive(true);
  39. CombatScenesConfig combatScenesConfig = scenes2.GetComponent<CombatScenesConfig>();
  40. _allCombatScenesConfigs.Add(combatScenesConfig);
  41. }));
  42. cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>(
  43. "NavMeshTarget.prefab",
  44. delegate(AssetHandle handle)
  45. {
  46. GameObject go = handle.AssetObject<GameObject>();
  47. _navMeshSurface = go.GetComponent<NavMeshSurface>();
  48. }));
  49. await cTaskAwaitBuffer.WaitAll();
  50. for (int i = 0; i < _allCombatScenesConfigs.Count; i++)
  51. {
  52. zoff = -i * 54;
  53. // index = i;
  54. _allCombatScenesConfigs[i].transform.position = new Vector3(0, 0, zoff);
  55. }
  56. zoff = 0;
  57. index = 0;
  58. nextConfigIndex = 0;
  59. _currConfig = _allCombatScenesConfigs[0];
  60. Vector3 pos = _allCombatScenesConfigs[0].heroPoint[0].position;
  61. // _navMeshSurface.transform.position = pos;
  62. UpdateNavMesh(pos);
  63. //
  64. }
  65. public CombatScenesConfig MoveToNextConfig()
  66. {
  67. nextConfigIndex++;
  68. nextConfigIndex %= _allCombatScenesConfigs.Count;
  69. return _currConfig=_allCombatScenesConfigs[nextConfigIndex];
  70. }
  71. public void NextScenesShow()
  72. {
  73. index++;
  74. index %= _allCombatScenesConfigs.Count;
  75. zoff -= 54;
  76. _allCombatScenesConfigs[index].transform.position = new Vector3(0, 0, zoff);
  77. }
  78. public void UpdateNavMesh(Vector3 pos)
  79. {
  80. if (_navMeshSurface == null)
  81. {
  82. Debug.LogError("没有导航网格");
  83. return;
  84. }
  85. _navMeshSurface.transform.position = pos;
  86. _navMeshSurface.BuildNavMesh();
  87. }
  88. public void Dispose()
  89. {
  90. if (scenesHandle != null)
  91. {
  92. scenesHandle.Release();
  93. }
  94. if (scenesHandle2 != null)
  95. {
  96. scenesHandle2.Release();
  97. }
  98. if (_navMeshSurface != null)
  99. {
  100. _navMeshSurface.gameObject.SetActive(false);
  101. }
  102. }
  103. }
  104. }