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]);
}
}
}
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]);
}
}
}