void Awake() { SounderData s = Resources.Load("SounderData") as SounderData; list = s.list; }
static void SetSounderRecords(bool add) { string file = "/Resources/SounderData.asset"; if (!Directory.Exists(Application.dataPath + "/Resources/")) { Directory.CreateDirectory(Application.dataPath + "/Resources/"); } SounderData sd = null; if (!File.Exists(Application.dataPath + file)) { sd = ScriptableObject.CreateInstance <SounderData>(); AssetDatabase.CreateAsset(sd, "Assets" + file); AssetDatabase.SaveAssets(); } else { sd = Resources.Load("SounderData") as SounderData; } object[] arr = Selection.GetFiltered(typeof(AudioClip), SelectionMode.DeepAssets); Dictionary <string, List <AudioClip> > dict = new Dictionary <string, List <AudioClip> >(); for (int i = 0; i < arr.Length; i++) { if (!(arr[i] is AudioClip)) { continue; } string name = System.Text.RegularExpressions.Regex.Replace((arr[i] as AudioClip).name, @"\d", ""); if (!dict.ContainsKey(name)) { dict.Add(name, new List <AudioClip>()); } dict[name].Add((arr[i] as AudioClip)); } List <SoundInfo> infos = new List <SoundInfo>(); SoundInfo info; foreach (KeyValuePair <string, List <AudioClip> > data in dict) { data.Value.Sort(delegate(AudioClip a1, AudioClip a2) { int i1 = 0, i2 = 0; int.TryParse(Regex.Replace(a1.name, @"[^\d.\d]", ""), out i1); int.TryParse(Regex.Replace(a2.name, @"[^\d.\d]", ""), out i2); return(i1.CompareTo(i2)); }); info = new SoundInfo(); info.name = data.Key; info.clips = data.Value.ToArray(); infos.Add(info); } if (infos.Count == 0) { Debug.LogError("请在库里选择音频文件。它们将被自动添加到Sounder的LIST里,保存好预制每个场景拖一个就KO了"); return; } if (add) { if (sd.list != null) { infos.AddRange(sd.list); } } var resultArr = infos.ToArray(); Array.Reverse(resultArr); sd.list = resultArr; AssetDatabase.SaveAssets(); Debug.Log("完成"); }