using System; using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; public class LoadMapMgr : MonoBehaviourSingletonTemplate { public string LoadSceneName, LoadMapPrefab; GameObject go_map; Camera[] arr_viewCam; MapData m_MapData; protected override void Awake() { base.Awake(); AddrResourceMgr.Ins.LoadObject(LoadMapPrefab, handle => { go_map = DSUtil.Get_Clone(handle.Result); AddrResourceMgr.Ins.Set_AddressableReleaseSelf(go_map); SceneManager.MoveGameObjectToScene(go_map, SceneManager.GetSceneByName(LoadSceneName)); m_MapData = go_map.GetComponent(); }); } public MapZoneData Get_MapZoneData(ChoiceMapData data) { return m_MapData.Get_MapZoneData(data.n_PortalIndex); } public void Get_PortalPos(ChoiceMapData data, Action action) { StartCoroutine(Co_Get_PortalPos(data, action)); } IEnumerator Co_Get_PortalPos(ChoiceMapData data, Action action) { while (DSUtil.CheckNull(m_MapData)) yield return null; action(Get_MapZoneData(data).go_portal.transform.position + Vector3.forward); } public Vector3 Get_ReincanationPos(ChoiceMapData data) { return Get_MapZoneData(data).go_reincarnation.transform.position + Vector3.forward; } public void Get_tfFarmer(ChoiceMapData data, Action action) { StartCoroutine(Co_Get_tfFarmer(data, action)); } IEnumerator Co_Get_tfFarmer(ChoiceMapData data, Action action) { while (DSUtil.CheckNull(m_MapData)) yield return null; action(Get_MapZoneData(data).tf_Farmer); } public void Get_tfObj(ChoiceMapData data, int index, Action action) { StartCoroutine(Co_Get_tfObj(data, index, action)); } IEnumerator Co_Get_tfObj(ChoiceMapData data, int index, Action action) { while (DSUtil.CheckNull(m_MapData)) yield return null; action(Get_MapZoneData(data).tf_Obj[index]); } public void Set_MazeMap(int index) { StartCoroutine(Co_Set_MazeMap(index)); } IEnumerator Co_Set_MazeMap(int index) { while (DSUtil.CheckNull(m_MapData)) yield return null; m_MapData.Set_MazeMap(index); } public void Set_MazeNextPortal(int index, bool active) { StartCoroutine(Co_Set_MazeNextPortal(index, active)); } IEnumerator Co_Set_MazeNextPortal(int index, bool active) { while (DSUtil.CheckNull(m_MapData)) yield return null; m_MapData.Set_MazeNextPortal(index, active); } public void SetActive_Map(bool _active) { go_map.SetActive(_active); } public Camera Get_ViewCamera(string _name) { if (arr_viewCam == null) arr_viewCam = go_map.GetComponentsInChildren(); for (int i = 0; i < arr_viewCam.Length; i++) { if (arr_viewCam[i].name.Equals(_name)) return arr_viewCam[i]; } return null; } }