public static string[] GetEeditorSettingWriteString(UISceneElementBase[] allData) { List <string> result = new List <string>(); foreach (UISceneElementBase uiBase in allData) { if (uiBase != null) { uiBase.UpdateData(); } if (uiBase.settingData != null) { switch (uiBase.settingData.Type) { case SceneElementType.MAP: { MapSettingData setting = (MapSettingData)uiBase.settingData; result.Add("M" + fastJSON.JSON.Instance.ToJSON(setting)); break; } case SceneElementType.NPC: { NPCSettingData setting = (NPCSettingData)uiBase.settingData; result.Add("N" + fastJSON.JSON.Instance.ToJSON(setting)); break; } default: { SpecialAreaSettingData setting = (SpecialAreaSettingData)uiBase.settingData; result.Add("C" + fastJSON.JSON.Instance.ToJSON(setting)); break; } } } } return(result.ToArray()); }
//自动导入配置文件 public static void AutoImportSettingFile() { string path = EditorUtility.OpenFilePanel("导入场景配置文件", Application.dataPath + "/Editor/SceneEditor/JC", "bytes"); if (string.IsNullOrEmpty(path)) { return; } List <SceneEditorSettingBaseData> settingDataList = new List <SceneEditorSettingBaseData>(); string strLine = null; try { FileStream aFile = new FileStream(path, FileMode.Open); StreamReader sr = new StreamReader(aFile); strLine = sr.ReadLine(); while (strLine != null) { if (strLine.Length > 0) { SceneEditorSettingBaseData settingData = null; string content = strLine.Substring(1); switch (strLine[0]) { case 'M': { MapSettingData mapData = fastJSON.JSON.Instance.ToObject <MapSettingData>(content); settingData = (SceneEditorSettingBaseData)mapData; break; } case 'N': { NPCSettingData npcData = fastJSON.JSON.Instance.ToObject <NPCSettingData>(content); settingData = (SceneEditorSettingBaseData)npcData; break; } case 'C': { SpecialAreaSettingData areaData = fastJSON.JSON.Instance.ToObject <SpecialAreaSettingData>(content); settingData = (SceneEditorSettingBaseData)areaData; break; } } if (settingData != null) { settingDataList.Add(settingData); } } strLine = sr.ReadLine(); } sr.Close(); } catch (IOException ex) { EditorUtility.DisplayDialog("错误", ex.ToString(), "确定"); return; } //Debug.LogError("settingDataList.count="+settingDataList.Count.ToString() ); //生成场景 foreach (SceneEditorSettingBaseData baseData in settingDataList) { GameObject create = null; if (baseData.Type == SceneElementType.MAP) { MapSettingData data = (MapSettingData)baseData; create = CreateMap(data.sourcePath, new Vector3(data.Attribute.pos[0], data.Attribute.pos[1], data.Attribute.pos[2]), new Vector2(data.GridSize[0], data.GridSize[1]), new Color(data.GridColor[0], data.GridColor[1], data.GridColor[2], data.GridColor[3])); if (create != null) { UISceneMap uimap = create.GetComponent <UISceneMap>(); if (uimap != null) { uimap.settingData = data; uimap.mapData = data.Attribute; uimap.InitData(); } } else { break; } } else if (baseData.Type == SceneElementType.NPC) { NPCSettingData data = (NPCSettingData)baseData; create = CreatePlant(data.sourcePath, new Vector3(data.Attribute.pos[0], data.Attribute.pos[1], data.Attribute.pos[2]), new Vector3(data.Attribute.scale[0], data.Attribute.scale[1], data.Attribute.scale[2]), data.Type, data.isAtMap, new Vector3(data.Attribute.rotation[0], data.Attribute.rotation[1], data.Attribute.rotation[2])); if (create != null) { //Debug.LogError(data.Attribute.startIntervalTime.ToString()); UINPC uinpc = create.GetComponent <UINPC>(); if (uinpc != null) { uinpc.settingData = data; uinpc.npcData = data.Attribute; uinpc.InitData(); } } } else { SpecialAreaSettingData data = (SpecialAreaSettingData)baseData; create = CreatePlant(data.sourcePath, new Vector3(data.Attribute.pos[0], data.Attribute.pos[1], data.Attribute.pos[2]), new Vector3(data.Attribute.scale[0], data.Attribute.scale[1], data.Attribute.scale[2]), data.Type, data.isAtMap, new Vector3(data.Attribute.rotation[0], data.Attribute.rotation[1], data.Attribute.rotation[2])); UISpecialArea uiarea = create.GetComponent <UISpecialArea>(); if (uiarea != null) { uiarea.settingData = data; uiarea.areaData = data.Attribute; uiarea.InitData(); } } } }