项目用的是Unity5.5版本,开发的时候将相关的图集、预制对象资源都放在 Resources 目录下,而真机使用的是 StreamingAssets 目录下的资源。
Resources(不分层级)在打包的时候,无论是否被使用,只要在里面会被打包进 apk 和 ipa 中,势必导致整个包体变大。
所以,我们需要做的事情就是。 Resources 目录改名为 xx –> 打包 –> xx 再改名回 Resources,这个过程一般都是手工修改,因为发现使用 Editor 提供的方法都会导致目录名再还原的时候,预制对象的引用发生了变化。我尝试使用 RenameAsset、MoveAsset都不能满意要求
RenameAsset(pathName、newName)
https://docs.unity3d.com/ScriptReference/AssetDatabase.RenameAsset.html
MoveAsset(oldPath、newPath)
https://docs.unity3d.com/ScriptReference/AssetDatabase.MoveAsset.html
最后同事通过反编译 UnityEditor.dll 文件,找到了这个方法,很神奇的方法,但和手动改名效果一样,目录名再还原回去的时候 svn 没有发生变
ObjectNames.SetNameSmart(obj, "xxxx");
到此,打包动作就可以考虑用程序全自动处理了。
网上查过一遍,没有发现更多关于 ObjectName.setNameSmart 的解释,希望这篇文章能帮助到正好为改名烦恼的童鞋