Unity编辑器扩展(音效控制面板,路径增删)

本文档介绍了一个Unity编辑器扩展,用于管理音效资源。该扩展包含一个音效控制面板,可以查看、添加和删除音效。用户可以通过文本字段输入音效名称和路径,点击按钮实现音效的添加。添加的音效信息会被保存到一个txt文件中,通过读取文件来重新加载音效列表,确保数据持久化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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]);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值