这里搜罗总结了部分网友unity4升级到unity5出现的问题,总结一下,方便需要的时候查阅:
一. 如果发现升级中有脚本错误,请第一时间使用菜单:
Assets -> Run API Updater ...
- 升级前做好项目备份。如果用了版本管理,最好重新建一个代码库,别把5的项目Commit到4上,到时候回滚很麻烦。
- 常见错误:一个内置的摄像机脚本,有个preview变量报错,把它改成 _preview即可。
- 很多API的命名错误可以用Assets / Run API Updater解决。
- Shader会变,尤其是一些野生的从第三方拿来用的Shader。这个没办法,只能逐个找类似的替换。
- 真正让人崩溃的是物理引擎,尤其是Joint相关的东西。这种大多发生的车辆类产品里。这个只能逐个去击破。把Joint的关节逐个拆分,找出问题所在。5.0最大的改动是Joint的Connect Anchor都需要重新设置。
- 其它的想到再补充吧。感觉5.2还不太稳定,按照Unity的尿性,起码等到5.5以后才能真正稳定下来.
=====================================
额 这是最近遇到的一个比较严重的问题:
NGUI无法直接用新的AssetBundle机制更新,每次从包里Load带UI的prefab就会有类似
至于问题发生的情况,以UISprite为例的话,是因为UI和Atlas不在一个AssetBundle里。
具体原因看 Unity5 AssetBundle support 大概能理解了:
额 这是最近遇到的一个比较严重的问题:
NGUI无法直接用新的AssetBundle机制更新,每次从包里Load带UI的prefab就会有类似
GameObject (named 'Sprite') references runtime script in scene file. Fixing!的错误。论坛上也有类似的问题 Assetbundle loading error
至于问题发生的情况,以UISprite为例的话,是因为UI和Atlas不在一个AssetBundle里。
具体原因看 Unity5 AssetBundle support 大概能理解了:
Loading streamed-scene will fail if exist game object that have component with a script property type and value is prefab's script.
Code: [Select]
class UISprite { [SerializeField] UIAtlas mAtlas; // It's prefab's script. Not works for AssetBundle }
I changed the property type to GameObject(prefab) from Script(prefab's script).
It works.
Code: [Select]
class U