/// <summary> /// 加载MapScene /// </summary> public void LoadMapScene() { UnLoadMapScene(); string sceneName = Constants.EXPORT_MAP_FOLDER_NAME_STARTWITHS + GetMapUid(); MapEditorSetting mapEditorSetting = MapEditorUtility.GetOrCreateMapEditorSetting(); string scenePath = string.Format("{0}/{1}/{2}{3}.unity" , mapEditorSetting.AssetExportDirectory , sceneName , Constants.SCENE_EXPORT_FILENAMESTARTWITHS , GetMapUid()); if (!File.Exists(scenePath)) { EditorUtility.DisplayDialog("提示", "未导出对应的MapScene", "确定"); return; } if (Application.isPlaying) { Scene scene = SceneManager.GetSceneByPath(scenePath); if (!scene.isLoaded) { m_MapScene = scene; SceneManager.LoadScene(scenePath, LoadSceneMode.Additive); } } else { m_MapScene = EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Additive); } }
public static ExportParameter CreateExportParameter() { ExportParameter exportParameter = new ExportParameter(); exportParameter.ExportedUnitAddressableKeys = new HashSet <string>(); MapEditorSetting mapEditorSetting = MapEditorUtility.GetOrCreateMapEditorSetting(); string exportAssetPath = string.Format("{0}/Units" , mapEditorSetting.AssetExportDirectory); string[] resAssets = AssetDatabase.FindAssets("t:Prefab", new string[] { exportAssetPath }); if (resAssets != null && resAssets.Length > 0) { for (int iRes = 0; iRes < resAssets.Length; iRes++) { string resPath = AssetDatabase.GUIDToAssetPath(resAssets[iRes]); string[] resSplit = resPath.Split('/'); if (resSplit != null && resSplit.Length > 0) { string lastName = resSplit[resSplit.Length - 1]; string[] lastNameSplit = lastName.Split('_'); if (lastNameSplit != null && lastNameSplit.Length == 2) { lastName = lastName.Replace(".prefab", ""); exportParameter.ExportedUnitAddressableKeys.Add(lastName); } } } } return(exportParameter); }
private IEnumerator Export_Co() { yield return(null); ExportParameter exportParameter = MapEditorUtility.CreateExportParameter(); exportParameter.ThrowExceptionAtAbort = true; exportParameter.ExportedUnitAddressableKeys = new HashSet <string>(); string[] sceneGuids = AssetDatabase.FindAssets("t:Scene"); for (int iScene = 0; iScene < sceneGuids.Length; iScene++) { Scene iterScene = EditorSceneManager.OpenScene(AssetDatabase.GUIDToAssetPath(sceneGuids[iScene]), OpenSceneMode.Single); GameObject[] rootGameObjects = iterScene.GetRootGameObjects(); for (int iRootGameObject = 0; iRootGameObject < rootGameObjects.Length; iRootGameObject++) { GameObject iterGameObject = rootGameObjects[iRootGameObject]; Map iterMap = iterGameObject.GetComponent <Map>(); if (iterMap) { //ExporterHandle handle = new Exporter().BeginExport(iterMap, MapEditorUtility.GetOrCreateMapEditorSetting().ExportAllMapSetting, exportParameter); ExporterHandle handle = new Exporter().BeginExport(iterMap, MapEditorUtility.GetOrCreateMapEditorSetting().ExportAllMapSetting, exportParameter, iterMap.GetAreaSpawnerList(), true); while (!handle.IsDone) { yield return(null); } } } } }
private void InstantiateUnit(SceneUnitInfo unitInfo, Transform parent) { if (m_Owner.UseAsset) { AssetUtil.InstanceAssetAsync(m_AreaDetailInfo.AssetInfos[unitInfo.AssetIndex].AddressableKey, (pathOrAddress, uObj, userData) => { if (uObj != null) { GameObject resultObj = uObj as GameObject; if (resultObj != null) { m_WaitInstantiateCount--; Transform t = resultObj.transform; t.SetParent(m_UnitsRoot); t.localPosition = unitInfo.LocalPosition; t.localRotation = unitInfo.LocalRotation; t.localScale = unitInfo.LocalScale; } } }); } else { m_WaitInstantiateCount--; string path = string.Format("{0}/{1}Map_{2}/{3}.prefab" , MapEditorUtility.GetOrCreateMapEditorSetting().AssetExportDirectory , Constants.UNIT_PREFAB_EXPORT_DIRECTORY , m_Owner.MapInfo.Uid , m_AreaDetailInfo.AssetInfos[unitInfo.AssetIndex].AddressableKey); GameObject asset = AssetDatabase.LoadAssetAtPath <GameObject>(path); if (asset == null) { string[] paths = AssetDatabase.FindAssets(m_AreaDetailInfo.AssetInfos[unitInfo.AssetIndex].AddressableKey); if (paths != null && paths.Length > 0) { path = AssetDatabase.GUIDToAssetPath(paths[0]); asset = AssetDatabase.LoadAssetAtPath <GameObject>(path); } } if (asset != null) { Transform t = Instantiate(asset).transform; t.SetParent(parent); t.localPosition = unitInfo.LocalPosition; t.localRotation = unitInfo.LocalRotation; t.localScale = unitInfo.LocalScale; } } }
private bool TryLoadAreaDetailInfo() { if (m_AreaDetailInfo == null) { string areaDetailInfoPath = string.Format("{0}/{1}{2}/{3}.asset" , MapEditorUtility.GetOrCreateMapEditorSetting().AssetExportDirectory , Constants.EXPORT_MAP_FOLDER_NAME_STARTWITHS , m_Owner.GetMapUid() , AreaInfo.DetailInfoAddressableKey); m_AreaDetailInfo = AssetDatabase.LoadAssetAtPath <AreaDetailInfo>(areaDetailInfoPath); if (areaDetailInfoPath == null) { Debug.LogError(string.Format("cant find file ({0})", areaDetailInfoPath)); } } return(m_AreaDetailInfo != null); }