如何从我的构建中排除不必要的 DLL?

jvi*_*roc 6 dll optimization game-engine unity-game-engine unity5

我正在尝试优化游戏的文件大小,尤其是 android 版本。我已经优化了资产并将构建剥离级别设置为使用微 mscorlib。但是,查看 Editor.log 会发现 DLL 仍占 50% 以上:

 Textures      2.7 mb     35.7% 
 Meshes        80.5 kb     1.0% 
 Animations    0.0 kb     0.0% 
 Sounds        0.8 kb     0.0% 
 Shaders       98.2 kb     1.3% 
 Other Assets  177.9 kb     2.3% 
 Levels        110.0 kb     1.4% 
 Scripts       447.4 kb     5.8% 
 Included DLLs 3.9 mb     52.2% 
 File headers  26.2 kb     0.3% 
 Complete size 7.5 mb     100.0% 
Run Code Online (Sandbox Code Playgroud)

3.9mb 看起来有点多,所以我查看了实际添加了哪些 DLL。我找到了这个:

 Mono dependencies included in the build
 Dependency assembly - Mono.Security.dll
 Dependency assembly - System.Core.dll
 Dependency assembly - System.dll
 Dependency assembly - mscorlib.dll
 Dependency assembly - UnityEngine.UI.dll
 Dependency assembly - UnityEngine.Networking.dll
 Dependency assembly - UnityEngine.Analytics.dll
 Dependency assembly - Assembly-CSharp.dll
 Dependency assembly - Assembly-UnityScript-firstpass.dll
 Dependency assembly - Assembly-UnityScript.dll
Run Code Online (Sandbox Code Playgroud)

这看起来可以改进很多。我不使用 UnitScript,所以 Assembly-UnityScript-firstpass.dll 和 Assembly-UnityScript.dll 应该已经过时了。我也不使用网络或分析,所以这些也可以删除。不确定 Mono.Security.dll 的作用或 UnityEngine.UI.dll 是否真的需要。那么,知道了这一点,我怎样才能摆脱这些看似不必要的 DLL 呢?

may*_*ayo 3

似乎没有直接的方法可以做到这一点。我只是尝试删除测试项目上的一些 dll 引用,但还不够。无论如何,Unity 在构建中包含了一些已删除的库。

但是,如果我们无法统一找到这些元素怎么办?这种方法奏效了。


脚步:

  1. 删除 Assembly-CSharp 和 Assembly-CSharp-firstpass 中的引用

    编辑项目中的引用

    参考文献列表

  2. 按照路径并将这些删除的 dll 重命名为其他名称,例如filename.dd_old

    跟踪这些dll的路径

    重命名这些dll

3.- 编译、构建并查看结果:)

前:

Mono dependencies included in the build
Dependency assembly .....
Dependency assembly - UnityEngine.UI.dll
Dependency assembly - UnityEngine.Networking.dll
Dependency assembly - UnityEngine.SpatialTracking.dll
Dependency assembly .....
Run Code Online (Sandbox Code Playgroud)

后:

Mono dependencies included in the build
Dependency assembly .....
Dependency assembly - UnityEngine.UI.dll
Dependency assembly - UnityEngine.SpatialTracking.dll
Dependency assembly .....
Run Code Online (Sandbox Code Playgroud)
  1. 测试你的游戏,我真的不知道这种做法会出什么问题,我的意思是,我真的不知道这种做法不会出什么问题:D

  2. 将文件重命名_old为下一个项目的原始名称,等等。