/// <summary> /// 导入已经存在的场景 /// 先导入data/bin/文件夹下的场景数据文件 /// 然后根据这个数据文件的id依次加载 "Prefabs/Scenes/scn"+sceneIdStr 这个路径下的各个场景文件 /// </summary> /// <param name="id">Identifier.</param> void LoadScene(int id) { Debug.Log(string.Format("开始导入场景{0}数据", id)); string sceneInfoPath = Path.GetDirectoryName(Application.dataPath) + "/data/bin/"; StringBuilder _path = new StringBuilder(); _path.Append(sceneInfoPath); _path.Append("scn"); _path.Append(id); byte[] bytes = FileHelper.ReadBytesFromFile(_path.ToString()); //Debug.Log("导入时buffer长度:" + bytes.Length); if (null == bytes) { Debug.LogError(string.Format("error!! 获取地图:{0}失败", _path.ToString())); return; } IoBuffer buffer = new IoBuffer(); buffer.PutBytes(bytes); //场景ID byte sceneId = buffer.GetByte(); sceneIdStr = sceneId.ToString(); //场景名 sceneNameStr = buffer.GetString(); //场景宽 int mapWidth = buffer.GetInt(); mapWidthStr = mapWidth.ToString(); //场景高 int mapHeight = buffer.GetInt(); mapHeightStr = mapHeight.ToString(); _path = null; Debug.Log(string.Format("导入场景{0}信息成功", sceneId)); CleanScene(); //scnPrefab路径,导出时需要,载入不需要 //string scnPrefabPath = Application.dataPath+"/Resources/Prefabs/Scenes/scn"+sceneIdStr; Debug.Log("开始载入场景" + sceneIdStr + "资源"); //创建新地图 GameObject goScene = Instantiate(Resources.Load("Prefabs/Scenes/scn" + sceneIdStr + "/scene")) as GameObject; if (null == goScene) { Debug.LogError("找不到" + "Prefabs/Scenes/scn" + sceneIdStr + "/scene文件 停止终止!!"); return; } goScene.name = "scene"; GameObject goTerrain = Instantiate(Resources.Load("Prefabs/Scenes/scn" + sceneIdStr + "/terrain")) as GameObject; if (null == goTerrain) { Debug.LogError("找不到" + "Prefabs/Scenes/scn" + sceneIdStr + "/terrain文件 停止终止!!"); return; } goTerrain.name = "terrain"; GameObject goLight = Instantiate(Resources.Load("Prefabs/Scenes/scn" + sceneIdStr + "/dlight")) as GameObject; if (null == goLight) { Debug.LogError("找不到" + "Prefabs/Scenes/scn" + sceneIdStr + "/dlight文件 停止终止!!"); return; } goLight.name = "dlight"; GameObject goTree = Instantiate(Resources.Load("Prefabs/Scenes/scn" + sceneIdStr + "/tree")) as GameObject; if (null == goTree) { Debug.LogError("找不到" + "Prefabs/Scenes/scn" + sceneIdStr + "/tree文件 停止终止!!"); return; } goTree.name = "tree"; GameObject goObj = Instantiate(Resources.Load("Prefabs/Scenes/scn" + sceneIdStr + "/obj")) as GameObject; if (null == goObj) { Debug.LogError("找不到" + "Prefabs/Scenes/scn" + sceneIdStr + "/obj文件 停止终止!!"); return; } goObj.name = "obj"; GameObject goAni = Instantiate(Resources.Load("Prefabs/Scenes/scn" + sceneIdStr + "/ani")) as GameObject; if (null == goAni) { Debug.LogError("找不到" + "Prefabs/Scenes/scn" + sceneIdStr + "/ani文件 停止终止!!"); return; } goAni.name = "ani"; GameObject goPartical = Instantiate(Resources.Load("Prefabs/Scenes/scn" + sceneIdStr + "/partical")) as GameObject; if (null == goPartical) { Debug.LogError("找不到" + "Prefabs/Scenes/scn" + sceneIdStr + "/partical文件 停止终止!!"); return; } goAni.name = "ani"; goPartical.name = "partical"; //info = "导入地图"+sceneIdStr+"成功"; Debug.Log(string.Format("导入场景{0}成功", sceneId)); }