Unity4.x项目升级Unity5.0过程中出现的各种常见问题

本文总结了Unity4.x项目升级至Unity5.0过程中可能遇到的多种问题及其解决方案,包括3D模型材质丢失、NavMesh升级报错、天空盒子显示混乱、模型显示异常、动画失效、脚本异常等,并提供了具体的应对措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近整理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);

从unity4升级到unity5模型显示问题

升级到Unity5之后,发现新导入的fbx非常的小,后来发现是unity5 fbx的导入多了一个FileScale选项,而这个地方我们从美术max资源那边带了一个0.1的缩放,本来之前我们这个缩放是放在Scale Factor里面的,所以这样的话,就算是重叠缩放了,做个记录,以后谁遇到这个问题可以看看

 

项目从unity4升级到unity5遇到的一些问题。

   问题1:项目升级后原本在4.6版本的animator带位移的动画在5.6中出现了位移问题。单独播放是有位移的。但是在游戏中播放有动画,但是动画中的位移没了。

  解决方法:找到这个animator所在的物体。把animator组件中的Apply Root Motion 取消勾选。

  问题2:升级后tag层错乱的问题,一般出现这个问题的原因是在老项目中添加新的tag值不规范产生的。添加tag值要按顺序添加不能隔位添加。在untiy5中tag管理系统会把两个tag值中间空着的tag移除掉。就是项目打包发布的时候tag值是按tag列表的序号打包的。存储的是对应的列表下标,不是tag的字符串。所以打包出来会出现tag值错乱的问题。

  解决方法:调整tag列表。按顺序填写,不要留空位,然后重新打包场景或预制。

  问题3:使用assetbundle打包的预制或场景,加载的时候出错。加载不了。

  解决方法:(个人观点)把需要打包的资源名字都写出小写。然后重新打包。

  后续遇到的问题我会及时更新的。这里先记录一下。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值