/// <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(); } }
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); }