public void LoadSceneData() { #if UNITY_EDITOR var settingData = TGSettingData.GetInstance(); var scn = GameObject.FindObjectOfType <TGBaseScene> (); SceneData sceneData = new SceneData(); if (scn != null) { sceneData = settingData.GetSceneData(scn); } else { sceneData = settingData.sceneDatas[0]; } TGData.SetSceneData(sceneData); if (TGData.SceneName != scn.SceneName) { m_controller.ErrorQuit("当前的场景与game.txt中的设备名称不匹配"); } #else var sceneData = LMFileWriter.ReadJSON <SceneData>(TGPaths.SceneData); TGData.SetSceneData(sceneData); #endif }
private void OnGUI() { EditorGUILayout.BeginVertical(); var settingData = TGSettingData.GetInstance(); // 如果没有则提示到TGframework/Preferences里创建 if (settingData.sceneDatas == null || settingData.sceneDatas.Count == 0) { EditorGUILayout.HelpBox("没有任何的SceneData,请通过TGFramework/Preferences创建", MessageType.Error); return; } // 如果有则允许通过弹窗选择,并且列出该信息 m_newSceneData = DrawSceneDataSelection(); m_newSceneDetail = DrawSceneDetailSelection(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Confirm")) { var setting = TGSettingData.GetInstance(); // 检测信息是否发生改变,如果发生改变则先把旧的信息移除 if (m_prevSceneData != m_newSceneData && m_prevSceneData != null) { m_prevSceneData.sceneDetails.Remove(m_prevSceneDetail); } // 如果该场景已经存在,则更新其数值 // 反之则添加新数据到列表里 if (m_newSceneData != null) { var scnIndex = m_newSceneData.sceneDetails.IndexOf(m_newSceneDetail); if (scnIndex >= 0) { m_newSceneData.sceneDetails[scnIndex] = m_newSceneDetail; } else { m_newSceneData.sceneDetails.Add(m_newSceneDetail); } } EditorUtility.SetDirty(settingData); EditorWindow.GetWindow <TGSettingDataWindow>().Repaint(); Close(); } if (GUILayout.Button("Cancel")) { Close(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); }
private static void Build(bool _openFolder) { var settingData = TGSettingData.GetInstance(); var sceneDatas = settingData.sceneDatas; if (sceneDatas == null || sceneDatas.Count == 0) { throw new Exception("SettingData没有任何存储的场景"); } for (int i = 0; i < sceneDatas.Count; i++) { Build(sceneDatas[i], _openFolder); } }
public static SceneData GetBySceneName(string _sceneName) { var setting = TGSettingData.GetInstance(); if (setting == null) { return(null); } foreach (var d in setting.sceneDatas) { foreach (var sd in d.sceneDetails) { if (sd.sceneName == _sceneName) { return(d); } } } return(null); }
private SceneData DrawSceneDataSelection() { var settingData = TGSettingData.GetInstance(); string[] sceneDatas = settingData.sceneDatas.Select(d => d.dataName).ToArray(); int[] optionValues = new int[sceneDatas.Length]; for (int i = 0; i < optionValues.Length; i++) { optionValues[i] = i; } int selectedIndex = settingData.sceneDatas.IndexOf(m_newSceneData); if (selectedIndex == -1) { selectedIndex = 0; } selectedIndex = EditorGUILayout.IntPopup("Setting Data", selectedIndex, sceneDatas, optionValues); return(settingData.sceneDatas[selectedIndex]); }
void CreateSettingData() { string projectPath = Application.dataPath + "/_Project/Resources"; if (Directory.Exists(projectPath)) { if (AssetDatabase.LoadAssetAtPath("Assets/_Project/Resources/SettingData.asset", typeof(TGSettingData)) == null) { TGSettingData data = ScriptableObject.CreateInstance <TGSettingData>(); AssetDatabase.CreateAsset(data, "Assets/_Project/Resources/SettingData.asset"); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } } else { Directory.CreateDirectory(projectPath); TGSettingData data = ScriptableObject.CreateInstance <TGSettingData>(); AssetDatabase.CreateAsset(data, "Assets/_Project/Resources/SettingData.asset"); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } Selection.activeObject = AssetDatabase.LoadAssetAtPath("Assets/_Project/Resources/SettingData.asset", typeof(TGSettingData)); }
private void OnGUI() { m_controllerScene = AssetDatabase.LoadAssetAtPath <SceneAsset>(TGPaths.ControllerScene); m_settingData = AssetDatabase.LoadAssetAtPath <TGSettingData>(TGPaths.SettingData); if (m_settingData == null || m_controllerScene == null) { EditorGUILayout.HelpBox("Setting Data or Controller Scene doesn't Exist", MessageType.Error); // SettingData不存在,提示创建Setting Data if (GUILayout.Button("初始化")) { EnsureDirectories(); if (m_settingData == null) { m_settingData = CreateSettingData(); } if (m_controllerScene == null) { m_controllerScene = CreateControllerScene(); } } } else { EditorGUILayout.ObjectField("Setting Data", m_settingData, typeof(TGSettingData), false); EditorGUILayout.ObjectField("Controller Scene", m_controllerScene, typeof(SceneAsset), false); TGEditorUtility.DrawUILine(Color.gray, 1, 20); for (int i = 0; i < m_settingData.sceneDatas.Count; i++) { DrawSceneData(i); TGEditorUtility.DrawUILine(Color.grey, 1, 20); } EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Create")) { Undo.RecordObject(m_settingData, "Create new Scene Data"); m_settingData.sceneDatas.Add(new SceneData()); EditorUtility.SetDirty(m_settingData); } if (GUILayout.Button("Remove Last")) { Undo.RecordObject(m_settingData, "Remove Last Scene Data"); if (m_settingData.sceneDatas != null && m_settingData.sceneDatas.Count > 0) { m_settingData.sceneDatas.RemoveAt(m_settingData.sceneDatas.Count - 1); } EditorUtility.SetDirty(m_settingData); } EditorGUILayout.EndHorizontal(); if (GUILayout.Button("Clear Null Scenes")) { ClearNullScene(); } var c = GUI.color; GUI.color = Color.green; if (GUILayout.Button("Build")) { TGBuildGame.BuildGame(); } GUI.color = c; } }