1. 程式人生 > >Unity編輯器擴充套件(音效控制面板,路徑增刪)

Unity編輯器擴充套件(音效控制面板,路徑增刪)

using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.Text;
using System.IO;
public class MusicWindowEditor : EditorWindow {
    private string audioName;
    private string audioPath;
    private Dictionary<string ,string> audioDic = new Dictionary<string,string>();
    private string savePath = Application.dataPath + "\\AudioWindowFramework\\audioList.txt";


    void Awake(){
        Debug.Log(Application.dataPath);
    }


    void OnInspectorUpdate(){
        ReloadAudioList();
    }

    [MenuItem("Manager/AudioManager")]
    static void AddWindow(){
        //Rect rect = new Rect(0, 0, 500, 500);
        //MusicWindowEditor musicWindowEditor = (MusicWindowEditor)EditorWindow.GetWindowWithRect(typeof(MusicWindowEditor), rect);
        MusicWindowEditor musicWindowEditor = EditorWindow.GetWindow<MusicWindowEditor>("音效管理");
        musicWindowEditor.Show();
    }

    void OnGUI(){
        GUILayout.BeginHorizontal();
        GUILayout.Label("音效名稱");
        GUILayout.Label("音效路徑");
        GUILayout.Label("音效操作");
        GUILayout.EndHorizontal();
        
        foreach(string key in audioDic.Keys){  //顯示已新增
            string value = null;
            audioDic.TryGetValue(key, out value);
            GUILayout.BeginHorizontal();
            GUILayout.Label(key);
            GUILayout.Label(value);
            if (GUILayout.Button("刪除"))
            {
                audioDic.Remove(key);
                AddAudioList();//更新
                return;
            }
            GUILayout.EndHorizontal();
        }
        //顯示新增框
        audioName = EditorGUILayout.TextField("音效名字",audioName);
        audioPath = EditorGUILayout.TextField("音效路徑", audioPath);


        if (GUILayout.Button("新增音效"))//被點選返回true
        {
            if (Resources.Load(audioPath) != null)
            {
                Debug.Log("新增音效成功");
                if (!audioDic.ContainsKey(audioName))//防止重複,字典報錯
                {
                    audioDic.Add(audioName, audioPath);
                    //TODO將音效新增到檔案
                    AddAudioList();
                    Debug.Log("Added");
                }
                
            }else{
                Debug.Log("新增音效失敗");
            }
        }
    }


    public void AddAudioList(){
        //audioDic.Clear();//清空
        StringBuilder sb = new StringBuilder();
        foreach(string key in audioDic.Keys){
            string value = null;
            audioDic.TryGetValue(key, out value);
           sb.AppendLine( key + "," + value);
           
        }
        //將字串儲存成檔案
        
        File.WriteAllText(savePath, sb.ToString());
       // Application.dataPath;
    }


    public void ReloadAudioList(){
        audioDic.Clear();
        string[] audioList = File.ReadAllLines(savePath);
        foreach (string line in audioList)
        {
            string[] keyAndValue = line.Split(',');
            audioDic.Add(keyAndValue[0], keyAndValue[1]);
        }
    }
}