123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- using System;
- using System.Collections.Generic;
- using Fort23.Core;
- using GameLogic.CombatScenesTool;
- using Unity.AI.Navigation;
- using UnityEngine;
- namespace GameLogic.Combat.CombatTool
- {
- public class CombatSenceController: IDisposable
- {
- private AssetHandle scenesHandle;
- private AssetHandle scenesHandle2;
- public GameObject scenes1;
- public GameObject scenes2;
- private NavMeshSurface _navMeshSurface;
- private float zoff;
- private int index = 0;
- private List<CombatScenesConfig> _allCombatScenesConfigs = new List<CombatScenesConfig>();
- public CombatScenesConfig _currConfig;
- private int nextConfigIndex;
- public async CTask InitScenes()
- {
- CTaskAwaitBuffer cTaskAwaitBuffer = new CTaskAwaitBuffer();
- cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>("Chapter01.prefab",
- delegate(AssetHandle handle)
- {
- scenesHandle = handle;
- scenes1 = scenesHandle.AssetObject<GameObject>();
- scenes1.SetActive(true);
- CombatScenesConfig combatScenesConfig = scenes1.GetComponent<CombatScenesConfig>();
- _allCombatScenesConfigs.Add(combatScenesConfig);
- }));
- cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>("Chapter02.prefab",
- delegate(AssetHandle handle)
- {
- scenesHandle2 = handle;
- scenes2 = scenesHandle2.AssetObject<GameObject>();
- scenes2.SetActive(true);
- CombatScenesConfig combatScenesConfig = scenes2.GetComponent<CombatScenesConfig>();
- _allCombatScenesConfigs.Add(combatScenesConfig);
- }));
- cTaskAwaitBuffer.AddTask(AssetBundleLoadManager.Instance.LoadAssetAsyncTask<GameObject>(
- "NavMeshTarget.prefab",
- delegate(AssetHandle handle)
- {
- GameObject go = handle.AssetObject<GameObject>();
- _navMeshSurface = go.GetComponent<NavMeshSurface>();
- }));
- await cTaskAwaitBuffer.WaitAll();
- for (int i = 0; i < _allCombatScenesConfigs.Count; i++)
- {
- zoff = -i * 54;
- // index = i;
- _allCombatScenesConfigs[i].transform.position = new Vector3(0, 0, zoff);
- }
- zoff = 0;
- index = 0;
- nextConfigIndex = 0;
- _currConfig = _allCombatScenesConfigs[0];
- Vector3 pos = _allCombatScenesConfigs[0].heroPoint[0].position;
- // _navMeshSurface.transform.position = pos;
- UpdateNavMesh(pos);
- //
- }
- public CombatScenesConfig MoveToNextConfig()
- {
- nextConfigIndex++;
- nextConfigIndex %= _allCombatScenesConfigs.Count;
- return _currConfig=_allCombatScenesConfigs[nextConfigIndex];
- }
- public void NextScenesShow()
- {
- index++;
- index %= _allCombatScenesConfigs.Count;
- zoff -= 54;
- _allCombatScenesConfigs[index].transform.position = new Vector3(0, 0, zoff);
- }
- public void UpdateNavMesh(Vector3 pos)
- {
- if (_navMeshSurface == null)
- {
- Debug.LogError("没有导航网格");
- return;
- }
- _navMeshSurface.transform.position = pos;
- _navMeshSurface.BuildNavMesh();
- }
- public void Dispose()
- {
- if (scenesHandle != null)
- {
- scenesHandle.Release();
- }
- if (scenesHandle2 != null)
- {
- scenesHandle2.Release();
- }
- if (_navMeshSurface != null)
- {
- _navMeshSurface.gameObject.SetActive(false);
- }
- }
- }
- }
|