コード例 #1
0
        private void OnGUI()
        {
            VoiceerEditorUtility.UiTitleBox(TitleString, VoiceerEditorUtility.BackGroundImage);

            if (_loadedPreset == null)
            {
                LoadPresetHeader();
                return;
            }

            EditPresetHeader();

            _loadedPreset.hideFlags     = HideFlags.NotEditable;
            _loadedPreset.metaData.url  = EditorGUILayout.TextField("URL:", _loadedPreset.metaData.url);
            _loadedPreset.metaData.memo = EditorGUILayout.TextField("その他:", _loadedPreset.metaData.memo);

            GUILayout.Space(20);

            _scrollPos = GUILayout.BeginScrollView(_scrollPos);
            {
                EditorGUI.BeginChangeCheck();
                {
                    foreach (Hook trigger in Enum.GetValues(typeof(Hook)))
                    {
                        if (_loadedPreset.GetVoiceSet(trigger) == null)
                        {
                            _loadedPreset.voiceSetList.Add(new VoicePreset.Set(trigger, new Sound()));
                        }

                        EditorGUILayout.BeginHorizontal();
                        EditorGUILayout.LabelField(VoiceerEditorUtility.GetDescriptionLabel(trigger),
                                                   VoiceerEditorUtility.Bold);

                        var clips = _loadedPreset.GetVoiceSet(trigger).voiceClips;

                        if (_loadedPreset.GetVoiceSet(trigger).voiceClips.Count != 0)
                        {
                            if (GUILayout.Button("-", GUILayout.Width(30)))
                            {
                                clips.RemoveRange(clips.Count - 1, 1);
                            }
                        }

                        if (GUILayout.Button("+", GUILayout.Width(30)))
                        {
                            clips.Add(null);
                        }

                        EditorGUILayout.EndHorizontal();

                        EditorGUI.indentLevel++;
                        for (int i = 0; i < _loadedPreset.GetVoiceSet(trigger).voiceClips.Count; i++)
                        {
                            _loadedPreset.GetVoiceSet(trigger).voiceClips[i] =
                                (AudioClip)EditorGUILayout.ObjectField(
                                    _loadedPreset.GetVoiceSet(trigger).voiceClips[i],
                                    typeof(AudioClip), false);
                        }

                        EditorGUI.indentLevel--;
                    }
                }
                if (EditorGUI.EndChangeCheck())
                {
                    EditorUtility.SetDirty(_loadedPreset);
                    AssetDatabase.SaveAssets();
                    // エディタを最新の状態にする
                    AssetDatabase.Refresh();
                }
            }
            GUILayout.EndScrollView();

            GUILayout.Space(10);
            VoiceerEditorUtility.Hr(position.width);
            if (GUILayout.Button("Preset選択モードに戻る"))
            {
                _loadedPreset = null;
            }
            GUILayout.Space(10);
            if (GUILayout.Button("パッケージを出力する"))
            {
                VoiceerEditorUtility.ExportPackage(_loadedPreset);
            }
        }