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

Unity5.x 项目升级过程中常见问题解决方案总结

2016-05-07 19:13 621 查看
最近整理Unity4.x项目升级Unity5.0过程中出现的各种常见问题,与大家共享。1:Unity4.x项目中3D模型其材质丢失,成为“白模”?解决方案:手工重新赋值材质贴图.

1:Unity4.x 项目中3D模型其材质丢失,成为“白模”?

解决方案:手工重新赋值材质贴图。

2:Unity4.x 项目中的NavMesh 升级报错?

“NavMesh asset format has changed. Please rebake the NavMesh data.” ?

解决方案:按照字面含义,重新对静态物体进行烘焙即可。

3:Unity4.x 天空盒子升级后显示混乱?

解决方案: 找到项目中“标准资源”(Standard Assets),点击天空盒子的材质,出现提示信息“This texture contains alpha, but is not RGBM(Incompatible with HDR[高动态光照渲染])”点击“Fix Now”进行自动修复即可。

4:Unity4.x 在升级后出现某些3D模型不显示的“严重”问题?

解决方案: 由于Unity5.0 与Unity4.x版本的底层编码变化较大,Unity5.0已经不能正确识别部分老“预设”,从而造成不显示问题。此时我们找到对应模型的“原型”3D模型,重新建立“预设”在场景中的原位置进行重新加载即可。(注意与原来的方位需要一致才可以)。

5:Unity4.x 项目升级后部分Animation动画失效(不动没有反应)?

解决方案:基本原理同上题,我们把Animation动画在Unity5.0中重新编辑与测试即可。

6: 由于脚本升级过程中造成的各种异常现象?

例如:跑酷、射击、RPG等游戏中的英雄对输入信息没有反应,射击与攻击无效等。

解决方案: 造成以上问题的直接或者间接原因多数是脚本的升级造成的问题,详细整理如下:

6.1>:屏幕鼠标锁定://Screen.lockCursor = true; //被Unity5 新脚本代替

Cursor.lockState = CursorLockMode.Locked;

而屏幕鼠标解锁:Cursor.lockState = CursorLockMode.None;

6.2>://GoNeedAddScriptsObj.AddComponent("类名称");//被Unity5 新脚本代替

GoNeedAddScriptsObj.AddComponent<DynamicAddScripts>();//必须用泛型代替。

6.3> //goCreatObj.Renderer.Material.color=Color.red;//老写法已经作废。

goCreatObj.GetComponent<Renderer>().material.color = Color.red

6.4> //this.animation.Play(); //写法禁用了

this.GetComponent<Animation>().Play("Walking"); //Unity5自动更正。

6.5> //con.gameObject.collider.xx;//否决

con.gameObject.GetComponent<Collider>().xxx;

7:关于AssetBounds错误信息:

“UnityEngine.AssetBundle.Load(string)' is obsolete: `Method Load has been deprecated. Script updater cannot update it as the loading behaviour has changed. Please use LoadAsset instead and check the documentation for details.”

解决方案:

WWW downloadAsset = new WWW(path);

//等待下载完成

yield return downloadAsset;

//加载复合对象,且通过名称把他们读取出来

//GameObject goPrefabs1= (GameObject)downloadAsset.assetBundle.Load("Prefabs_SelfRotationCube"); GameObject goPrefabs1 = (GameObject)downloadAsset.assetBundle.LoadAsset("Prefabs_SelfRotationCube");//Unity5方式。

8:读取当前关卡Application.LoadLevel(Application.loadLevelName)//老化

//Unity5.x中读取当前关卡:首先在类上加载命名空间:Using UnityEngine.SceneManagement;

SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);

9.播放音频

两种属性定义:方法各有不同,其实原理一样,都是先找到音效源AudioSource,然后再找片段AudioClip

1. 属性定义为public AudioClip m_shootClip;时

Unity4.x版本中的this.audio.PlayOneShot(m_shootClip)语句

在Unity5.x版本中应该为this.GetComponent<AudioSource>().PlayOnShot(m_shootClip);

2. 属性定义为

protected AudioSource m_audio;

public AudioClip m_shootClip;时

可以直接使用m_audio.PlayOneShot(m_shootClip);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: