使用脚本将Unity的ogg音效全部改为2d音效

来源:互联网 发布:梁咏琪 知乎 编辑:程序博客网 时间:2024/05/17 06:54
[MenuItem("将所有3D音效改成2D音效")]static void change3DMusicTo2D(){string[] fs = GetSoundMetaFile();bool hasChangeFile = false;foreach(var f in fs){if(MakeSoundMetaFile3DFalse(f)){hasChangeFile = true;}}if(hasChangeFile)AssetDatabase.Refresh();}static string[] GetSoundMetaFile(){string dir = Application.dataPath + "/Resources/Res/Audio/";return System.IO.Directory.GetFiles(dir,"*.ogg.meta",System.IO.SearchOption.AllDirectories);}static bool MakeSoundMetaFile3DFalse(string file){var text = System.IO.File.ReadAllText(file);int pos = text.IndexOf("3D: 1");if(pos > 0){text = text.Replace("3D: 1","3D: 0");System.IO.File.WriteAllText(file,text);Debug.Log(string.Format("Sound File Make 3D False:{0}",file);return true;}return false;}


注:

如果你在游戏开发过程中使用诸如SVN的版本控制工具,那你必须得理解Meta文件的作用。在游戏场景中引用一个游戏资源,Unity并不直接按照文件路径和名称,而是使用一个独一无二的GUID来指向工程里的该资源文件。这个GUID储存在Unity工程为每个资源和文件夹生成的Meta文件里。 
使用GUID的好处就是,即使你移动、重命名或者修改资源的内容,这个资源仍然可以通过GUID来被引用(只要GUID不变,资源就能够被引用)。缺点是你必须明确的意识到Meta文件是被关联到特定的资源上的,如果你删除了一个meta文件,Unity会认为原始的资源文件已经被删除,然后为这个“新的”资源文件生成一个新的GUID。这就是游戏场景中的资源引用中断的最常见原因。 
除了GUID,meta文件还存储了有关资源导入的信息。例如,贴图资源在导入时可以当作标准贴图、法线贴图、GUI贴图、cookie或者光线贴图。这些导入设置都会被存储在meta文件里。 
之前遇到一个问题,就是我上传到SVN的怪物Prefab,在策划那边查看出现“Missing Script”的问题,经检查,是该丢失的脚本的meta文件没有上传到SVN。所以,按照上面的理论,因而Prefab找不到该脚本的引用。


0 0
原创粉丝点击