using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class AudioManager{
//static静态变量 const 常量(在静态变量基础上限制不能改变)
//private string savePath = Application.dataPath + "\\AudioWindowFramework\\audioList.txt";
private static string audioTextPathPrefix = Application.dataPath + "\\AudioWindowFramework" ;
private const string audioTextPathSuffix = "audioList.txt";
public static string audioTextPath = audioTextPathPrefix + "\\" + audioTextPathSuffix;
private Dictionary<string, AudioClip> audioClipDic = new Dictionary<string, AudioClip>();
private bool isMute = false;
//如果想通过trangeIOC管理 则不能使用初始化方法,因为StrangeIOC使用的是通过反射调用:
//所以在StrangeIOC context中注入时,手动调用下面的Init方法进行初始化,当view需要调用时,则先注入然后调用
//
//AudioManager()
//{
// LoadAudioClip();
//}
public void Init()
{
LoadAudioClip();
}
public void LoadAudioClip(){
TextAsset ta = Resources.Load<TextAsset>(audioTextPathSuffix);//此处报空,可能与后缀名.txt有关
string[] keyAndPaths = ta.text.Split('\n');
foreach(string keyAndPath in keyAndPaths){
if (string.IsNullOrEmpty(keyAndPath))
continue;
string[] keyPath = keyAndPath.Split(',');
AudioClip audioClip = Resources.Load<AudioClip>(keyPath[1]);
audioClipDic.Add(keyPath[0], audioClip);
}
}
public void Play(string name){
if (isMute)
{
return;
}
AudioClip audioClip = null;
audioClipDic.TryGetValue(name, out audioClip);
AudioSource.PlayClipAtPoint(audioClip, Vector3.zero);
}
public void Play(string name, Vector3 position)
{
if (isMute)
{
return;
}
AudioClip audioClip = null;
audioClipDic.TryGetValue(name, out audioClip);
AudioSource.PlayClipAtPoint(audioClip, position);
}
}
使用StrangeIOC注入自建类时报错
最新推荐文章于 2022-04-09 21:24:37 发布