Unity加速编译小技巧

今日豆知识——加速编译小技巧 (qq.com)

在Unity开发过程中,我们会经常修改脚本代码。而每次修改脚本代码之后,Unity都需要重新编译脚本。这个过程在一些大型项目里面,是比较消耗时间的。那么有没有什么方法可以加快这个过程呢?

我们需要知道,在每次返回到Editor的时候,Unity都编译了哪些东西。

Unity工程中所有生成的编译文件都会放到Library\ScriptAssemblies 这个文件夹中。比如大家熟悉的Assembly-CSharp.dll。这个dll就是我们日常写的脚本最终的归宿。

可想而知,如果所有的文件最终都编译到这一个文件中,那么稍有“风吹草动”就会引起天崩地裂般的大范围重新编译。所以,我们自然会考虑到,将这个文件进行分拆,将不经常修改的代码放到一个单独的地方,从而减少不必要的文件编译。

那么对于dll拆分我们有哪些方式呢?

1.基于Assembly Definition。

Assembly Definition是Unity官方提供的进行代码拆分的最佳实践。首先将相应的模块代码放入到同一个文件夹,然后在这个文件夹下创建一个Assembly Definition。

我们对这个Assembly Definition进行一些设置:

从上图看出,我们指定当前代码是否使用unsafe code,是否自动解析其依赖引用关系等。其中比较重要的是Assembly Definition References,这个选项可以指定当前dll所依赖的其他dll。

这个比较常见的使用情况,一个Editor所使用的dll会依赖相应的Runtime dll。另外一个比较重要的,是Platform选项。这个选项可以指明,当前这个dll需要被应用到哪些平台上,从而进行不同平台的区分。

当我们创建好一个Assembly Definition之后,我们在Library\ScriptAssemblies中会发现对应的dll:

当我们没有更改Assembly Definition所覆盖的代码时,这部分代码就不会再去参与后续的编译。

除了Assembly Definition这种官方提供的最佳实践的方式之外,其实Unity还有隐藏的小技巧。

2.在Unity中,有几个比较特殊的文件夹也可以实现类似效果。

他们是:

Plugins,Pro Standard Assets,Standard Assets。

这三个文件夹会单独产生一个dll:Assembly-CSharp-firstpass.dll。我们可以利用这一特性,也可以实现类似的效果。比如我们将一些不常修改的代码,放入对应的文件夹,即可将他们单独放入一个dll:

除了上述的代码分拆方法之外,在编码的过程中也有一些地方会影响到最终出包的速度,比如以下写法:

模板是我们经常会用到的一种语法糖,它可以帮我们快速完成一些特定的编码工作。然而,这个语法糖不是免费的。在我们编译到IL2CPP之后,我们会发现,这类模板函数会根据参数的不同排列组合,展开为一个个独立的函数。

当我们有大量的模板展开之后,必然会使我们的代码文件快速膨胀,从而增加IL2CPP最终的编译速度。

所以,大家在使用模板的时候,一定要留心其参数的排列组合数量,控制好整体的代码大小。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unity开发中,有一些小技巧可以提高效率和方便开发。以下是一些常用的Unity开发小技巧: 1. 锁定角度和移动对象:在旋转对象时按住Ctrl/Cmd键可以锁定角度,同样的方法也适用于移动对象。要修锁定的默认值,可以到Edit->SnapSettings进行修。 2. 对齐锁定技巧:当移动对象时,按住V键可以启用节点锁定,可以将两个点简单对齐,对于关卡对象排列有帮助。 3. 直接开启说明文件:在组件选单内点击蓝色的问号图标,可以直接打开说明文件。 4. 在Play模式下修数值:如果在Play模式下调整数值后发现不合适,可以点击组件列表右上方的小齿轮,然后选择CopyComponent将组件复制一份,在退出Play模式后再点击小齿轮选择PasteComponent将复制的组件粘贴回去。 5. 使用Layers按钮管理显示或隐藏对象:使用Layers按钮可以管理显示或隐藏对象。例如,可以将一些只在编辑初期使用的坐标对象归类到一个Layer,当要隐藏这些对象时,只需点击Layers按钮,然后将该图层右边的眼睛图标取消勾选即可。 6. 在Profiler中切换图表显示:在Profiler中,可以点击Drawcalls、Scripts、Rendering、VSync等名称左边的小方块来切换是否显示相应图表。 7. 调整Playmode tint颜色:初学者在Play模式下修东西后,可能在停止播放后发现所有的修都恢复到调整前。为了避免这种困扰,可以在Preferences设置中的Colours/Colors调整Playmode tint颜色,这样你就可以很容易地分辨是否在播放模式。 这些小技巧可以帮助开发者更高效地使用Unity进行开发和调试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Unity 开发的十个实用小技巧](https://blog.csdn.net/weixin_46052359/article/details/115072925)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kerven_HKW

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值