public void BuildLocatorObj(SERoomDataTree dataTree) { m_roomObj = dataTree.mOutRoomObj; m_roomData = dataTree.mRoomData; RoomCfg roomCfg = m_roomObj.AddComponent <RoomCfg>(); roomCfg.GUID = m_GUID; roomCfg.roomObjID = m_roomObjID; m_roomObj.transform.localPosition = new Vector3(m_roomObj.transform.localPosition.x, -0.1f, m_roomObj.transform.localPosition.z); m_locatorObj = m_roomObj.transform.Find("Locator").gameObject; m_RTLocatorObj = m_roomObj.transform.Find("LocatorRT").gameObject; // for (int i = 0; i < m_gateList.Count; i++ ) // { // if (!m_gateList[i].isGateOpen) // { // Transform childTrans = m_roomObj.transform.Find("GateLocate_" + strGatesPrefix[i]); // if (null != childTrans) // { // childTrans.gameObject.SetActive(false); // } // continue; // } // // Transform childTrans1 = m_roomObj.transform.Find("RemovableGate_" + strGatesPrefix[i]); // if (null != childTrans1) // { // childTrans1.gameObject.SetActive(false); // } // //重新生成障碍相关的二维表数据 // ConfigObstacleArray((ENGateDirection)i); // //房间门位置相关信息生成 // childTrans1 = m_roomObj.transform.Find("GateLocate_" + strGatesPrefix[i]); // if (null != childTrans1) // { // childTrans1.gameObject.SetActive(false); // SceneGateInfo gateInfo = GameTable.SceneGateTableAsset.Lookup(m_gateList[i].gateObjId); // if (null != gateInfo) // { // GameResPackage.AsyncLoadObjectData data = new GameResPackage.AsyncLoadObjectData(); // IEnumerator e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(gateInfo.prefabName), data); // while (true) // { // e.MoveNext(); // if (data.m_isFinish) // { // break; // } // yield return e.Current; // } // if (data.m_obj != null) // { // GameObject obj = data.m_obj as GameObject; // obj.transform.parent = childTrans1.parent; // obj.transform.position = new Vector3(childTrans1.position.x, 0f, childTrans1.position.z); // obj.transform.rotation = childTrans1.rotation; // GateCfg gatecfg = obj.AddComponent<GateCfg>(); // gatecfg.OpenConditionType = m_gateList[i].gateOpenCondId; // gatecfg.OpenCondParamList = m_gateList[i].gateOpenCondParam; // gatecfg.OpenCondCountList = m_gateList[i].gateOpenCondCount; // obj.SetActive(true); // m_gateList[i].OutGateObject = obj; // } // } // } // if (null != m_gateList[i].BridgeData) // { // GameResPackage.AsyncLoadPackageData loadData2 = new GameResPackage.AsyncLoadPackageData(); // IEnumerator e2 = m_gateList[i].BridgeData.nextRoomNode.BuildLocatorObj(dataTree.mGateData[i].mNextRoomNode, loadData2); // while (true) // { // e2.MoveNext(); // if (loadData2.m_isFinish) // { // break; // } // yield return e2.Current; // } // m_gateList[i].GateToRoomObjID = m_gateList[i].BridgeData.nextRoomNode.m_GUID; // m_gateList[i].GateOpenAnim(false); // } // else // { // m_gateList[i].GateOpenAnim(true); // } // } // loadData.m_isFinish = true; }
// 生成场景资源数据 public IEnumerator BuildSceneResObj(SERoomDataTree sce, GameResPackage.AsyncLoadPackageData loadData, int gateIndex = -1) { string obstacleFileName = "Prefabs/" + m_RoomPrefabName + "-bytes.bytes"; GameResPackage.AsyncLoadObjectData loadData2 = new GameResPackage.AsyncLoadObjectData(); IEnumerator e = PoolManager.Singleton.Coroutine_Load(obstacleFileName, loadData2, false, false); while (true) { e.MoveNext(); if (loadData2.m_isFinish) { break; } yield return(e.Current); } if (loadData2.m_obj != null) { TextAsset asset = loadData2.m_obj as TextAsset; if (asset == null) { Debug.Log("obstacleFileName=" + obstacleFileName); } else { m_obstacleData = new SceneObstacleData(); m_obstacleData.Load(asset.bytes); } } loadData2 = new GameResPackage.AsyncLoadObjectData(); e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(m_RoomPrefabName), loadData2, false, false); while (true) { e.MoveNext(); if (loadData2.m_isFinish) { break; } yield return(e.Current); } if (loadData2.m_obj != null) { sce.mRoomObj = loadData2.m_obj as GameObject; } string roomDataName = m_RoomPrefabName + "-data"; loadData2 = new GameResPackage.AsyncLoadObjectData(); e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(roomDataName), loadData2, false, false); while (true) { e.MoveNext(); if (loadData2.m_isFinish) { break; } yield return(e.Current); } if (loadData2.m_obj != null) { sce.mRoomData = loadData2.m_obj as GameObject; } sce.mRoomInfoTree = this; // for (int i = 0; i < m_gateList.Count; i++) // { // sce.mGateData[i] = new SEGateData(); // if (null != m_gateList[i].BridgeData) // { // SceneBridgeInfo bridgeInfo = GameTable.SceneBridgeTableAsset.Lookup(m_gateList[i].BridgeData.bridgeObjId); // if (null != bridgeInfo) // { // loadData2 = new GameResPackage.AsyncLoadObjectData(); // e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(bridgeInfo.bridgeHeadPrefab), loadData2, false, false); // while (true) // { // e.MoveNext(); // if (loadData2.m_isFinish) // { // break; // } // yield return e.Current; // } // if (loadData2.m_obj != null) // { // sce.mGateData[i].mBridgeHeadObj = loadData2.m_obj as GameObject; // } // loadData2 = new GameResPackage.AsyncLoadObjectData(); // e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(bridgeInfo.bridgeBodyPrefab), loadData2, false, false); // while (true) // { // e.MoveNext(); // if (loadData2.m_isFinish) // { // break; // } // yield return e.Current; // } // if (loadData2.m_obj != null) // { // sce.mGateData[i].mBridgeBodyObj = loadData2.m_obj as GameObject; // } // loadData2 = new GameResPackage.AsyncLoadObjectData(); // e = PoolManager.Singleton.Coroutine_Load(GameData.GetPrefabPath(bridgeInfo.bridgeTailPrefab), loadData2, false, false); // while (true) // { // e.MoveNext(); // if (loadData2.m_isFinish) // { // break; // } // yield return e.Current; // } // if (loadData2.m_obj != null) // { // sce.mGateData[i].mBridgeTailObj = loadData2.m_obj as GameObject; // } // //sce.mGateData[i].mBridgeHeadObj = GameData.LoadPrefab<GameObject>(bridgeInfo.bridgeHeadPrefab); // //sce.mGateData[i].mBridgeBodyObj = GameData.LoadPrefab<GameObject>(bridgeInfo.bridgeBodyPrefab); // } // sce.mGateData[i].mIsHaveTunnel = true; // sce.mGateData[i].mBridgeCenterLength = m_gateList[i].BridgeData.bridgeCenterLength; // sce.mGateData[i].mNextRoomNode = new SERoomDataTree(); // m_gateList[i].isGateOpen = true; // GameResPackage.AsyncLoadPackageData loadData3 = new GameResPackage.AsyncLoadPackageData(); // IEnumerator e6 = m_gateList[i].BridgeData.nextRoomNode.BuildSceneResObj(sce.mGateData[i].mNextRoomNode, loadData3, (i + 2) % 4);//一共四个门0对应2,1对应3。0+2%4= 2,1+2%4=3,2+2%4=0,3+2%4=1。· // while (true) // { // e6.MoveNext(); // if (loadData3.m_isFinish) // { // break; // } // yield return e6.Current; // } // } // else // {//当该房间的这个门是没有联通出去的路的,但是这个门是另外房间进来的门那这个门要有意义。否则无意义 // if (gateIndex == i) // { // m_gateList[i].isGateOpen = true; // m_gateList[i].gateOpenCondId = ENGateOpenCondType.enNone; // } // else // { // m_gateList[i].isGateOpen = false; // } // } // } loadData.m_isFinish = true; }