Ejemplo n.º 1
0
        //---------------------------------------------------
        // OnInspectorGUI
        //---------------------------------------------------
        public override void OnInspectorGUI()
        {
            InternSetting data = target as InternSetting;

            EditorGUILayout.LabelField("チーム名 ※日本語可 ランキング用");
            EditorGUILayout.LabelField("チーム全員で同じにしてください");
            data.TeamName = EditorGUILayout.TextField(data.TeamName);

            EditorGUILayout.Space();

            EditorGUILayout.LabelField("割り振れられたチームy記号を選択してください");
            EditorGUILayout.LabelField("チーム全員で同じにしてください");
            data.AiClassName = (InternSetting.TEAM)EditorGUILayout.EnumPopup("チーム記号", data.AiClassName);

            EditorGUILayout.Space();

            Generate(data);

            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();

            ExportPackage(data);

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();
            EditorGUILayout.BeginHorizontal();

            MasterMode(data);

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();
        }
Ejemplo n.º 2
0
        //---------------------------------------------------
        // MasterMode
        //---------------------------------------------------
        private void MasterMode(InternSetting data)
        {
            if (Resources.Load <SettingData>("Setting/SettingData").InternMaster)
            {
                if (GUILayout.Button("ALPHA"))
                {
                    SetTeam(Ateam.Define.Battle.TEAM_TYPE.ALPHA, data);
                }

                if (GUILayout.Button("BRAVO"))
                {
                    SetTeam(Ateam.Define.Battle.TEAM_TYPE.BRAVO, data);
                }

                if (GUILayout.Button("RESET"))
                {
                    UnityEngine.SceneManagement.Scene scene = UnityEditor.SceneManagement.EditorSceneManager.OpenScene(BattleScenePath);
                    GameObject go = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Resources/Prefabs/AI/CustomAI.prefab");
                    GameObject.Find("BattleMain").GetComponent <BattleSystem>().AISystemList[(int)Define.Battle.TEAM_TYPE.ALPHA] = go;
                    GameObject.Find("BattleMain").GetComponent <BattleSystem>().AISystemList[(int)Define.Battle.TEAM_TYPE.BRAVO] = go;
                    GameObject.Find("BattleMain").GetComponent <BattleSystem>().TeamNameList[(int)Define.Battle.TEAM_TYPE.ALPHA] = "Enemy_Alpha";
                    GameObject.Find("BattleMain").GetComponent <BattleSystem>().TeamNameList[(int)Define.Battle.TEAM_TYPE.BRAVO] = "Enemy_Bravo";
                    UnityEditor.SceneManagement.EditorSceneManager.SaveScene(scene);
                    UnityEditor.SceneManagement.EditorSceneManager.OpenScene(TitleScenePath);
                }
            }
        }
Ejemplo n.º 3
0
        //---------------------------------------------------
        // ExportPackage
        //---------------------------------------------------
        private void ExportPackage(InternSetting data)
        {
            try
            {
                if (GUILayout.Button("2.ExportPackage"))
                {
                    DirectoryInfo dir  = new DirectoryInfo(WritePath);
                    FileInfo[]    info = dir.GetFiles("*");
                    List <string> list = new List <string>();

                    foreach (FileInfo fi in info)
                    {
                        if (fi.Name.Contains(".meta"))
                        {
                            continue;
                        }

                        list.Add(WritePath + fi.Name);
                        Debug.Log(WritePath + fi.Name);
                    }

                    AssetDatabase.ExportPackage(list.ToArray(), data.TeamName + ".unitypackage");
                    EditorUtility.DisplayDialog("完了", "正常に処理が完了しました", "OK");
                }
            }
            catch (Exception exception)
            {
                EditorUtility.DisplayDialog("作成に失敗しました", "ExportPackageボタンを何回かリトライしてダメなら講師へ報告してください", "OK");
                Debug.LogError(exception.ToString());
            }
        }
Ejemplo n.º 4
0
        //---------------------------------------------------
        // SetTeam
        //---------------------------------------------------
        private void SetTeam(Define.Battle.TEAM_TYPE type, InternSetting data)
        {
            UnityEngine.SceneManagement.Scene scene = UnityEditor.SceneManagement.EditorSceneManager.OpenScene(BattleScenePath);
            GameObject go = AssetDatabase.LoadAssetAtPath <GameObject>(WritePath + data.AiClassName + ".prefab");

            GameObject.Find("BattleMain").GetComponent <BattleSystem>().AISystemList[(int)type] = go;
            GameObject.Find("BattleMain").GetComponent <BattleSystem>().TeamNameList[(int)type] = data.TeamName;
            UnityEditor.SceneManagement.EditorSceneManager.SaveScene(scene);
            UnityEditor.SceneManagement.EditorSceneManager.OpenScene(TitleScenePath);
        }
Ejemplo n.º 5
0
        public static void CreatePrefab()
        {
            if (Directory.Exists(DirectoryPath) == false)
            {
                Directory.CreateDirectory(DirectoryPath);
            }

            InternSetting exampleAsset = CreateInstance <InternSetting> ();

            AssetDatabase.CreateAsset(exampleAsset, DirectoryPath + SettingFileName);
            AssetDatabase.Refresh();

            Selection.activeInstanceID = exampleAsset.GetInstanceID();
        }
Ejemplo n.º 6
0
        //---------------------------------------------------
        // Generate
        //---------------------------------------------------
        private void Generate(InternSetting data)
        {
            try
            {
                if (GUILayout.Button("1.Generate"))
                {
                    _progressSettingType = PROGRESS_SETTING_TYPE.GENERATE;

                    EditorUtility.DisplayProgressBar(ProgressSettingTitle, "作成", ((float)_progressSettingType / (float)PROGRESS_SETTING_TYPE.MAX));

                    //CSを生成
                    string readDataText = File.ReadAllText(ReadFilePath);
                    readDataText = readDataText.Replace("AISystemTemplate", Enum.GetName(typeof(InternSetting.TEAM), (int)data.AiClassName));

                    string csharpPath = WritePath + data.AiClassName + ".cs";
                    File.WriteAllText(csharpPath, readDataText);
                    AssetDatabase.ImportAsset(csharpPath);
                    AssetDatabase.Refresh();

                    //空のプレファブを生成
                    GameObject go = EditorUtility.CreateGameObjectWithHideFlags(Enum.GetName(typeof(InternSetting.TEAM), (int)data.AiClassName), HideFlags.HideInHierarchy);

                    PrefabUtility.CreatePrefab(WritePath + data.AiClassName + ".prefab", go);
                    Editor.DestroyImmediate(go);

                    AssetDatabase.RenameAsset(SettingFilePath, data.AiClassName + "Setting");
                    AssetDatabase.Refresh();

                    _progressSettingType = PROGRESS_SETTING_TYPE.ATTACH;
                    EditorUtility.DisplayProgressBar(ProgressSettingTitle, "アタッチ", ((float)_progressSettingType / (float)PROGRESS_SETTING_TYPE.MAX));
                }

                if (_progressSettingType == PROGRESS_SETTING_TYPE.ATTACH && !EditorApplication.isUpdating)
                {
                    Type classType = null;

                    foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
                    {
                        foreach (Type type in assembly.GetTypes())
                        {
                            if (type.Name == Enum.GetName(typeof(InternSetting.TEAM), (int)data.AiClassName))
                            {
                                classType = type;
                            }
                        }
                    }

                    if (classType == null)
                    {
                        return;
                    }

                    //プレファブにアタッチ
                    GameObject go = AssetDatabase.LoadAssetAtPath <GameObject>(WritePath + data.AiClassName + ".prefab");

                    if (go != null)
                    {
                        if (go.GetComponent(classType) == null)
                        {
                            go.AddComponent(classType);
                        }
                    }

                    _progressSettingType = PROGRESS_SETTING_TYPE.SET;
                    EditorUtility.DisplayProgressBar(ProgressSettingTitle, "セット", ((float)_progressSettingType / (float)PROGRESS_SETTING_TYPE.MAX));
                }

                if (_progressSettingType == PROGRESS_SETTING_TYPE.SET)
                {
                    SetTeam(Ateam.Define.Battle.TEAM_TYPE.ALPHA, data);
                    _progressSettingType = PROGRESS_SETTING_TYPE.DONE;
                    EditorUtility.DisplayProgressBar(ProgressSettingTitle, "終了確認", ((float)_progressSettingType / (float)PROGRESS_SETTING_TYPE.MAX));
                    EditorUtility.ClearProgressBar();
                }

                if (_progressSettingType == PROGRESS_SETTING_TYPE.DONE)
                {
                    _progressSettingType = PROGRESS_SETTING_TYPE.NONE;

                    EditorUtility.DisplayDialog("完了", "正常に処理が完了しました", "OK");
                }
            }
            catch (Exception exception)
            {
                EditorUtility.ClearProgressBar();
                EditorUtility.DisplayDialog(" 作成に失敗しました", "Generateボタンを何回かリトライしてダメなら講師へ報告してください\n" + "進捗状況 : " + _progressSettingType.ToString(), "OK");
                Debug.LogError(exception.ToString());
                _progressSettingType = PROGRESS_SETTING_TYPE.NONE;
            }
        }