Example #1
0
        /// <summary>
        /// 要素の列挙を更新
        /// </summary>
        private void ElementEnumUpdate()
        {
            // 確認するパス
            var outputScriptPath = Directory.GetFiles(Directory.GetCurrentDirectory(), "ElementBase.cs", SearchOption.AllDirectories).FirstOrDefault();
            if (string.IsNullOrEmpty(outputScriptPath))
            {
                throw new System.Exception("要素の列挙を更新できません");
            }

            // フルパスからディレクトリパスにする
            outputScriptPath = System.IO.Path.GetDirectoryName(outputScriptPath);
            // ディレクトリにある要素を全取得
            var files = Util.DirectoryUtils.GetFileNamesInPath(outputScriptPath);

            var names = new List<string>();
            foreach (var path in files)
            {
                // meta 以外の時は追加
                var ex = System.IO.Path.GetExtension(path);
                if (ex == ".meta")
                {
                    continue;
                }

                var name = System.IO.Path.GetFileNameWithoutExtension(path);
                names.Add(name);
            }

            // 保存してenum作成
            var gEnum = new Util.DynamicEnum("Elements");
            if (gEnum.Save(names))
            {
                AssetDatabase.Refresh();
            }
        }
Example #2
0
            public override void OnInspectorGUI()
            {
                soundManager        = target as SoundManager;
                soundManager._mixer = EditorGUILayout.ObjectField("AudioMixer", soundManager._mixer, typeof(AudioMixer), false) as AudioMixer;

                EditorGUILayout.Separator();

                #region AudioData

                for (int i = 0; i < soundManager._audioDatas.Count; ++i)
                {
                    if (foldSoundDatas.Count < i + 1)
                    {
                        foldSoundDatas.Add(false);
                    }

                    if (foldSoundDatas[i] = EditorGUILayout.Foldout(foldSoundDatas[i], soundManager._audioNames[i]))
                    {
                        EditorGUILayout.BeginVertical("box");
                        EditorGUILayout.BeginHorizontal();
                        //再生ボタン表示
                        if (soundManager._audioDatas[i] != null && soundManager._audioDatas[i].isPlaying)
                        {
                            if (GUILayout.Button("■"))
                            {
                                soundManager._audioDatas[i].Stop();
                            }
                        }
                        else if (GUILayout.Button("▶"))
                        {
                            soundManager._audioDatas[i].Play();
                        }
                        EditorGUILayout.EndHorizontal();
                        // UIの表示たち
                        soundManager._audioDatas[i].clip                  = EditorGUILayout.ObjectField("AudioClip", soundManager._audioDatas[i].clip, typeof(AudioClip), false) as AudioClip;
                        soundManager._audioDatas[i].loop                  = EditorGUILayout.Toggle("Loop", soundManager._audioDatas[i].loop);
                        soundManager._audioDatas[i].playOnAwake           = EditorGUILayout.Toggle("PlayOnAwake", soundManager._audioDatas[i].playOnAwake);
                        soundManager._audioDatas[i].volume                = EditorGUILayout.Slider("Volume", soundManager._audioDatas[i].volume, 0, 1);
                        soundManager._audioDatas[i].pitch                 = EditorGUILayout.Slider("Pitch", soundManager._audioDatas[i].pitch, -3, 3);
                        soundManager._audioDatas[i].bypassEffects         = EditorGUILayout.Toggle("BypassEffects", soundManager._audioDatas[i].bypassEffects);
                        soundManager._audioDatas[i].bypassListenerEffects = EditorGUILayout.Toggle("BypassListenerEffects", soundManager._audioDatas[i].bypassListenerEffects);
                        soundManager._audioDatas[i].bypassReverbZones     = EditorGUILayout.Toggle("BypassReverbZone", soundManager._audioDatas[i].bypassReverbZones);
                        soundManager._audioDatas[i].reverbZoneMix         = EditorGUILayout.Slider("ReverbZoneMix", soundManager._audioDatas[i].reverbZoneMix, 0, 1.1f);
                        soundManager._audioDatas[i].spatialBlend          = EditorGUILayout.Slider("SpatialBlend", soundManager._audioDatas[i].spatialBlend, 0, 1);
                        soundManager._audioDatas[i].mute                  = EditorGUILayout.Toggle("Mute", soundManager._audioDatas[i].mute);
                        soundManager._audioDatas[i].outputAudioMixerGroup = EditorGUILayout.ObjectField("OutPut", soundManager._audioDatas[i].outputAudioMixerGroup, typeof(AudioMixerGroup), false) as AudioMixerGroup;
                        if (soundManager._audioDatas[i].outputAudioMixerGroup == null)
                        {
                            EditorGUILayout.HelpBox("Outputが設定されていないオーディオは音量の一括設定等が適用できません", MessageType.Error);
                        }
                        EditorGUILayout.EndVertical();
                    }
                }

                #endregion AudioData

                #region Add/Remove Button

                EditorGUILayout.BeginHorizontal();
                newAudioDataName = EditorGUILayout.TextField(newAudioDataName);
                if (GUILayout.Button("追加"))
                {
                    if (soundManager._audioNames.Contains(newAudioDataName) || string.IsNullOrEmpty(newAudioDataName))
                    {
                        GUIContent content = new GUIContent("既にKeyが存在するか、Keyが空です");
                        EditorWindow.focusedWindow.ShowNotification(content);
                    }
                    else
                    {
                        soundManager._audioNames.Add(newAudioDataName);
                        var newAudioSource = soundManager.gameObject.AddComponent <AudioSource>();
                        newAudioSource.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector;
                        soundManager._audioDatas.Add(newAudioSource);
                    }
                    newAudioDataName = string.Empty;
                }
                EditorGUILayout.Space();
                selectAudioSourceIndex = EditorGUILayout.Popup(selectAudioSourceIndex, soundManager._audioNames.ToArray());
                if (GUILayout.Button("削除"))
                {
                    if (soundManager._audioNames.Count > selectAudioSourceIndex)
                    {
                        DestroyImmediate(soundManager._audioDatas[selectAudioSourceIndex]);
                        soundManager._audioNames.RemoveAt(selectAudioSourceIndex);
                        soundManager._audioDatas.RemoveAt(selectAudioSourceIndex);
                        foldSoundDatas.RemoveAt(selectAudioSourceIndex);
                    }
                }
                EditorGUILayout.EndHorizontal();

                DebugEditorScript();

                #endregion Add/Remove Button

                EditorGUILayout.Space();

                #region CreateScriptFile

                // csに保存
                if (GUILayout.Button("適用"))
                {
                    var gEnum = new Util.DynamicEnum("AudioKey");
                    if (gEnum.Save(soundManager._audioNames))
                    {
                        AssetDatabase.Refresh();
                    }
                }

                #endregion CreateScriptFile

                EditorUtility.SetDirty(soundManager);
            }