找回密码
 立即注册
查看: 147|回复: 1

Unity 手动编译 Reload 脚本 减少等待

[复制链接]
发表于 2022-11-24 12:15 | 显示全部楼层 |阅读模式
知乎上传不了大图 请到github 查看

Unity 手动编译 Reload 脚本

这是个自定义reload domain工具,加快工作流,减少等待.测试版本是Unity2021,理论上来说2020以上都可.
脚本地址:UnityManualReload (github.com)
在Unity中遇到的问题

在unity工作流中,修改脚本->编译脚本->reload domain(重载域)-> 进入play
通过区分assembly能加快编译,但是reload domain 却很慢,每次编译之后都要reload domain,而且进入播放前也会reload domain
示例:

写程序经常会Ctrl+s,一旦保存,就会重新编译,继而触发reload. 有时候会返回Unity编辑器,只是查看场景,并不想reload,会让我们漫长等待.
Unity有个Enter Play Mode Setting  可配置的进入运行模式 - Unity 手册

禁用Reload Domain 可以快速进入播放模式.但是每次修改完脚本还是会重新reload. 还有就是对于静态数据如果没有重新reload 还是会保持之前的数据(建议不要禁用,真的很坑) 具体查看:https://docs.unity.cn/cn/2021.3/Manual/DomainReloading.html
当然有些通过禁用Auto refresh,使用ctrl+r,来手动刷新也可以,但是如果导入的是图片等其他资源,也要刷新.
所以还是要手动reload最可靠
如何解决频繁Reload

我们要做的就是,添加新脚本或者修改脚本后,经过确认无误之后,我们在reload,而且在进入 play模式,如果已经重载过域,不会二次reload
unity 提供了两个API EditorApplication.LockReloadAssemblies();和EditorApplication.UnlockReloadAssemblies();一个加锁,一个解锁.
配合Enter Play Mode Setting 就可以大大减少时间.
效果图:

使用方法

脚本导入Editor文件夹之后,菜单栏Tools->Tools/开启手动Reload Domain  ,然后需要reload 时候按下Ctrl+t即可.

新改进2022年11月8日15:32:33

  • 每次进入play模式之前,会检查是否需要reload,已经reload就不用了,没有的话自动reload,这样能保证每次数据的正确性
参考

Unity 关闭脚本编译 - 知乎 (zhihu.com)
发表于 2022-11-24 12:18 | 显示全部楼层
还需要验证,各位请试试
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-27 22:30 , Processed in 0.118221 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表