CombatSenceController.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. private AssetHandle scenesHandle3;
  14. public GameObject scenes1;
  15. public GameObject scenes2;
  16. public GameObject scenes3;
  17. private NavMeshSurface _navMeshSurface;
  18. private float zoff;
  19. private int index = 0;
  20. private List<CombatScenesConfig> _allCombatScenesConfigs = new List<CombatScenesConfig>();
  21. public CombatScenesConfig _currConfig;
  22. private int nextConfigIndex;
  23. public async CTask InitScenes()
  24. {
  25. CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
  26. cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>("Chapter01.prefab",
  27. delegate(AssetHandle handle)
  28. {
  29. scenesHandle = handle;
  30. scenes1 = scenesHandle.AssetObject<GameObject>();
  31. scenes1.SetActive(true);
  32. CombatScenesConfig combatScenesConfig = scenes1.GetComponent<CombatScenesConfig>();
  33. _allCombatScenesConfigs.Add(combatScenesConfig);
  34. }));
  35. cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>("Chapter02.prefab",
  36. delegate(AssetHandle handle)
  37. {
  38. scenesHandle2 = handle;
  39. scenes2 = scenesHandle2.AssetObject<GameObject>();
  40. scenes2.SetActive(true);
  41. CombatScenesConfig combatScenesConfig = scenes2.GetComponent<CombatScenesConfig>();
  42. _allCombatScenesConfigs.Add(combatScenesConfig);
  43. }));
  44. // cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>("Chapter03.prefab",
  45. // delegate(AssetHandle handle)
  46. // {
  47. // scenesHandle2 = handle;
  48. // scenes2 = scenesHandle2.AssetObject<GameObject>();
  49. // scenes2.SetActive(true);
  50. // CombatScenesConfig combatScenesConfig = scenes2.GetComponent<CombatScenesConfig>();
  51. // _allCombatScenesConfigs.Add(combatScenesConfig);
  52. // }));
  53. cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>(
  54. "NavMeshTarget.prefab",
  55. delegate(AssetHandle handle)
  56. {
  57. GameObject go = handle.AssetObject<GameObject>();
  58. _navMeshSurface = go.GetComponent<NavMeshSurface>();
  59. }));
  60. await cTaskAwaitBuffer.WaitAll();
  61. for (int i = 0; i < _allCombatScenesConfigs.Count; i++)
  62. {
  63. zoff = -i * 97;
  64. // index = i;
  65. _allCombatScenesConfigs[i].transform.position = new Vector3(0, 0, zoff);
  66. }
  67. zoff = 0;
  68. index = 0;
  69. nextConfigIndex = 0;
  70. _currConfig = _allCombatScenesConfigs[0];
  71. Vector3 pos = _allCombatScenesConfigs[0].heroPoint[0].position;
  72. // _navMeshSurface.transform.position = pos;
  73. UpdateNavMesh(pos);
  74. //
  75. }
  76. public CombatScenesConfig MoveToNextConfig()
  77. {
  78. nextConfigIndex++;
  79. nextConfigIndex %= _allCombatScenesConfigs.Count;
  80. return _currConfig=_allCombatScenesConfigs[nextConfigIndex];
  81. }
  82. public void NextScenesShow()
  83. {
  84. index++;
  85. index %= _allCombatScenesConfigs.Count;
  86. zoff -= 97;
  87. _allCombatScenesConfigs[index].transform.position = new Vector3(0, 0, zoff);
  88. }
  89. public void UpdateNavMesh(Vector3 pos)
  90. {
  91. if (_navMeshSurface == null)
  92. {
  93. Debug.LogError("没有导航网格");
  94. return;
  95. }
  96. _navMeshSurface.transform.position = pos;
  97. _navMeshSurface.BuildNavMesh();
  98. }
  99. public void Dispose()
  100. {
  101. if (scenesHandle != null)
  102. {
  103. scenesHandle.Release();
  104. }
  105. if (scenesHandle2 != null)
  106. {
  107. scenesHandle2.Release();
  108. }
  109. if (_navMeshSurface != null)
  110. {
  111. _navMeshSurface.gameObject.SetActive(false);
  112. }
  113. }
  114. }
  115. }