您的位置:首页 > 移动开发 > Unity3D

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编辑器运行下完全正常啊!!!等我找到解决方法我会更新博客写在下面的。(我新创建了一个空项目把这个项目拷贝过去重新打开就好了。具体原因不明,如果有朋友也遇到了这种问题,有其他的解决办法欢迎在评论里共享一下)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: