Unity4.6.x项目升级到unity5.6.x需要调整哪些东西
2018-02-01 16:29
1461 查看
项目升级要把unity4.6的升级到5.6,在这里做一下记录。
1.导入项目时弹出unity项目版本变动框,点击upgrate。unity会自动把一些脚本更新成适应unity5.6。(部分脚本中变量及方法)
2.修改加载场景的方法。unity4.6使用的是
Application.LoadLevel("场景名");
Application.LoadLevelAsync("场景名");异步加载
unity5.6需要改成
SceneManager.LoadScene("场景名");
SceneManager.LoadSceneAsync("场景名");异步加载
需要添加 using UnityEngine.SceneManagement;
3.修改AssetBudle的加载方法。untiy4.6使用
AssetBundle ad = new AssetBundle ();
Object ob = ad.Load("");
AssetBundleRequest obj = ad.LoadAsync("",typeof(Object));
Object[] obs = ad.LoadAll();
改为
AssetBundle ad = new AssetBundle();
Object ob = ad.LoadAsset("");
AssetBundleRequest obj = ad.LoadAssetAsync("", typeof(Object));
Object[] obs = ad.LoadAllAssets();
4.spine动画的调整。更新新的spine运行库。然后把项目中的spine动画文件用于运行库想对应的spine版本重新导出一遍。
5.spine动画脚本引用的改变,脚本中引用spine的命名空间名不一样,由using Spine; 改为 using Spine.Unity;
6.哎 这个替换spine动画真的很烦,先替换spine运行库,之前的spine动画就会报错,点选一下spine动画中的文件unity会卡死你!!!还有就是原来的spine做了预制,或被其他脚本引用。只能手动在操作一遍了。可能先把spine动画文件替换后再更新spine运行库好一点(没试,你们可以试试)。
7.调整一个关于加载场景时用到的一个方法。
void OnLevelWasLoaded( int level ) { } 调整为
using UnityEngine.SceneManagement;
void OnEnable ( ) { SceneManager.sceneLoaded += OnSceneLoaded; }
void OnDisable ( ) { SceneManager.sceneLoaded -= OnSceneLoaded;}
void OnSceneLoaded (Scene scence, LoadSceneMode mode){ }
8.更新一些第三方插件。
9.更新assetbundle中打包和加载方式。这个网上比较多我就不多说了。
10.部分api功能的小调整。在unity4.6版本中使用触发检测方法 void OnTriggerExit2D ( Collider2D other ){}。如果该物体在触发范围内把被检测的物体的触发器.enabled =false;这个方法不会被触发。但是在unity5.6新的版本中,如果该触发器在触发范围内,把这个触发器物体的触发器隐藏掉,那么会触发 void OnTriggerExit2D ( Collider2D other ){}这个方法。(这里说的隐藏是指隐藏掉的那一刻会执行一次触发离开方法,之后这个物体被隐藏掉了当然就不会触发了)
11.2D刚体组件的调整。如果你带有2D刚体物体的isKinematic是勾选上的,那么在unity5.6中2D刚体是没有这个选项的,你需要把Rigibody 2D组件下的 Body Type 修改为isKinematic。脚本中unity5.6弃用了gameObject.rigidbody2D.fixedAngle = true; 改用: gameObject.GetComponent<Rigidbody2D>().constraints = RigidbodyConstraints2D.FreezeRotation;
12.还有对于第三方插件使用的shader。如果使用assetbundle打包场景或预制会有shader丢失,我的方法是手动重新把shader添加上。
13.我用assetbundle打包场景,在编辑器上运行打包后的场景很正常,但是打包后发现加载不了。最后通过测试发现,被打包的场景和预制添加assetbundleName的时候默认都是小写。而实际上我的场景名是大写小写都有的。是不是这个原因呢?我把场景名字都改成小写,然后打包发布,结果居然可以加载了。具体原因我也不是太清楚,不过我的猜测是,assetbundleName名字不管你写的时候是大写还小写都会变成小写。但是场景名字中有大写,那么发布apk后加载的场景名字你写的是大写。assetbundleName是小写会报错。
14.遇到了一个奇葩的现象。我打包后再unity中运行很正常啊,但是打包发布apk运行里面的触发事件都没有反应。瞬间懵逼了。在unity编辑器运行下完全正常啊!!!等我找到解决方法我会更新博客写在下面的。(我新创建了一个空项目把这个项目拷贝过去重新打开就好了。具体原因不明,如果有朋友也遇到了这种问题,有其他的解决办法欢迎在评论里共享一下)
1.导入项目时弹出unity项目版本变动框,点击upgrate。unity会自动把一些脚本更新成适应unity5.6。(部分脚本中变量及方法)
2.修改加载场景的方法。unity4.6使用的是
Application.LoadLevel("场景名");
Application.LoadLevelAsync("场景名");异步加载
unity5.6需要改成
SceneManager.LoadScene("场景名");
SceneManager.LoadSceneAsync("场景名");异步加载
需要添加 using UnityEngine.SceneManagement;
3.修改AssetBudle的加载方法。untiy4.6使用
AssetBundle ad = new AssetBundle ();
Object ob = ad.Load("");
AssetBundleRequest obj = ad.LoadAsync("",typeof(Object));
Object[] obs = ad.LoadAll();
改为
AssetBundle ad = new AssetBundle();
Object ob = ad.LoadAsset("");
AssetBundleRequest obj = ad.LoadAssetAsync("", typeof(Object));
Object[] obs = ad.LoadAllAssets();
4.spine动画的调整。更新新的spine运行库。然后把项目中的spine动画文件用于运行库想对应的spine版本重新导出一遍。
5.spine动画脚本引用的改变,脚本中引用spine的命名空间名不一样,由using Spine; 改为 using Spine.Unity;
6.哎 这个替换spine动画真的很烦,先替换spine运行库,之前的spine动画就会报错,点选一下spine动画中的文件unity会卡死你!!!还有就是原来的spine做了预制,或被其他脚本引用。只能手动在操作一遍了。可能先把spine动画文件替换后再更新spine运行库好一点(没试,你们可以试试)。
7.调整一个关于加载场景时用到的一个方法。
void OnLevelWasLoaded( int level ) { } 调整为
using UnityEngine.SceneManagement;
void OnEnable ( ) { SceneManager.sceneLoaded += OnSceneLoaded; }
void OnDisable ( ) { SceneManager.sceneLoaded -= OnSceneLoaded;}
void OnSceneLoaded (Scene scence, LoadSceneMode mode){ }
8.更新一些第三方插件。
9.更新assetbundle中打包和加载方式。这个网上比较多我就不多说了。
10.部分api功能的小调整。在unity4.6版本中使用触发检测方法 void OnTriggerExit2D ( Collider2D other ){}。如果该物体在触发范围内把被检测的物体的触发器.enabled =false;这个方法不会被触发。但是在unity5.6新的版本中,如果该触发器在触发范围内,把这个触发器物体的触发器隐藏掉,那么会触发 void OnTriggerExit2D ( Collider2D other ){}这个方法。(这里说的隐藏是指隐藏掉的那一刻会执行一次触发离开方法,之后这个物体被隐藏掉了当然就不会触发了)
11.2D刚体组件的调整。如果你带有2D刚体物体的isKinematic是勾选上的,那么在unity5.6中2D刚体是没有这个选项的,你需要把Rigibody 2D组件下的 Body Type 修改为isKinematic。脚本中unity5.6弃用了gameObject.rigidbody2D.fixedAngle = true; 改用: gameObject.GetComponent<Rigidbody2D>().constraints = RigidbodyConstraints2D.FreezeRotation;
12.还有对于第三方插件使用的shader。如果使用assetbundle打包场景或预制会有shader丢失,我的方法是手动重新把shader添加上。
13.我用assetbundle打包场景,在编辑器上运行打包后的场景很正常,但是打包后发现加载不了。最后通过测试发现,被打包的场景和预制添加assetbundleName的时候默认都是小写。而实际上我的场景名是大写小写都有的。是不是这个原因呢?我把场景名字都改成小写,然后打包发布,结果居然可以加载了。具体原因我也不是太清楚,不过我的猜测是,assetbundleName名字不管你写的时候是大写还小写都会变成小写。但是场景名字中有大写,那么发布apk后加载的场景名字你写的是大写。assetbundleName是小写会报错。
14.遇到了一个奇葩的现象。我打包后再unity中运行很正常啊,但是打包发布apk运行里面的触发事件都没有反应。瞬间懵逼了。在unity编辑器运行下完全正常啊!!!等我找到解决方法我会更新博客写在下面的。(我新创建了一个空项目把这个项目拷贝过去重新打开就好了。具体原因不明,如果有朋友也遇到了这种问题,有其他的解决办法欢迎在评论里共享一下)
相关文章推荐
- Gradle升级4.1(插件3.0.0)变化了哪些东西,需要做哪些改变。
- SVN管理android项目用svn控制版本,svn本身是不会识别哪些该传,哪些不该传,这就导致有些关于路径的东西(比如拓展jar的路径)也被上传了,而当别人下载后,那个路径对于这个人可能完全不存在,
- 一些项目需要的东西整合(1)——九款按钮
- 做一个php软件产品,需要哪些东西呢?
- 优秀的项目经理需要具备哪些品质?
- 项目经理需要做哪些工作呢?
- IOS UISwitch 感觉官方提供的拓展性不够好,老感觉这个东西项目中用到需要自己定制
- Java Web项目开发到底需要掌握哪些技术?
- 你的项目需要升级成64bit程序吗?
- Java web项目开发需要掌握哪些技术?
- 一些项目需要的东西整合(2)—— 浮动导航
- IT项目管理需要注意哪些内容
- Unity5.x 项目升级过程中常见问题解决方案总结
- 个人接国外外包项目需要哪些技能
- Java Web项目开发到底需要掌握哪些技术
- web前端需要学习哪些东西?
- 优秀的项目经理需要具备哪些品质?
- 嵌入式开发需要学习哪些东西
- Java Web项目开发到底需要掌握哪些技术?
- ASP中 哪些东西需要做封装