Example #1
0
    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
    }
Example #2
0
    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();
    }
Example #3
0
    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);
        }
    }
Example #4
0
    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);
    }
Example #5
0
    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]);
    }
Example #6
0
    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;
        }
    }