FindUnusedAssets是这个工具的主要入口,实现了编辑器的扩展菜单及其内部调用。 AssetCollector是总的工具类,用来收集所有的asset文件 ClassReferenceCollection用来收集所有的.cs脚本文件。 ShaderReferenceCollection用来收集所有的Shader文件。 AssetCollector AssetCollector实现了这个工具的核心代码,点击菜单时会调用定义在它内部...
FindUnusedAssets是这个工具的主要入口,实现了编辑器的扩展菜单及其内部调用。 AssetCollector是总的工具类,用来收集所有的asset文件 ClassReferenceCollection用来收集所有的.cs脚本文件。 ShaderReferenceCollection用来收集所有的Shader文件。 AssetCollector AssetCollector实现了这个工具的核心代码,点击菜单时会调用定义在它内部...
Tools { public static class FindUnusedAssets { [MenuItem("Tools/Find Unused Assets (UI)", false, 100)] static private void RunUI() { var artsPath = Path.Combine(Utils.GetArtsPath(), "Canvases"); Run( "t:Texture t:Animation t:Animator", new string[] { artsPath + "/_Animations"...
等到没有任何 游戏场景物体在用这些Assets以后,这些assets就成了没有引用的游离数据块了,是UnusedAssets了,这时候就可以通过 Resources.UnloadUnusedAssets来释放,Destroy不能完成这个任 务,AssetBundle.Unload(false)也不行,AssetBundle.Unload(true)可以但不安全,除非你很清楚没有任何 对象在用这些Assets了。 配个图加深...
to form a map of all assets. Then it uses: AssetDatabase.GetDependencies to find dependencies for each of those assets. As a result dependencies map is formed. Then it simply finds all assets which are not presented as a dependency within this map. Such assets considered as unused if they...
所以:UnusedAssets不但要没有被实际物体引用,也要没有被生命周期内的变量所引用,才可以理解为 Unused(引用计数为0) 所以所以:如果你用个全局变量保存你Load的Assets,又没有显式的设为null,那 在这个变量失效前你无论如何UnloadUnusedAssets也释放不了那些Assets的。如果你这些Assets又不是从磁盘加载的,那除了 UnloadUn...
AssetCollector ClassReferenceCollection FindUnusedAssets ShaderReferenceCollection 下载地址:https://github.com/unity-cn/Tool-UnityAssetCleaner 使用:Unity导航菜单栏中选择 Assets-> Delete Unused Assets 三种模式,选择一个合适的,然后点击Delete,轻松搞定
Asset是指在Assets目录下的所有文件,在工程里面每个Asset会有一个对应的Meta文件,Meta文件用于描述Asset在工程里面的格式,之前分享的贴图配置也是通过修改Meta文件来达成。一个Asset包含一个或多个Object,这里的Obejct可以直接包含数据,也可以表示引用了其他Asset文件下的Object。
publicstaticclassFindUnUnUsedUITexture { staticList<string> getUUIDsInFile(stringpath) { StreamReader file =newStreamReader(path); List<string> uuids =newList<string>(); stringline; while((line = file.ReadLine()) !=null) { var reg =newRegex(@"([a-f0-9]{32})"); ...
• Don’t use FindObjects or LINQ • Use StringBuilder for string concatenation • Reuse large temporary work buffers(重用大量临时工作缓冲区) • ToString() • .tag 改用 CompareTag() 方法 Unity API Temporary Allocations(临时分配) ...