总结Unity 初学者容易犯的编译与运行时错误

本文出自 “刘老师讲Unity” 博客,请务必保留此出处
http://liuguozhu.blog.51cto.com/9142031/1584768

最近在教授Unity 初级课程的时候,经常被学生问及一些非常简单的Unity 出错信息如何解决的问题。我就想这些问题是否可以总结一下,给大家一张易错清单我的工作量是否可以大量减轻呢? 对! 说做就做,以下是我总结的部分内容。

问题1:
当脚本添加游戏对象过程中,弹出的出错窗口: “Can’t add script…..” ?
解答:
原因是Unity 规定脚本的文件名称必须与类名相同,否则报错。请更改Unity脚本的名称或者类的名称。

问题2:
在学生学习导航寻路过程中,在运行过程中遇到的运行时错误信息: “SetDestination” can only be called on an active agent that has been placed on a NavMesh”?
解答:
典型导航寻路错误,主要原因是你需要导航的游戏对象,放置的位置不对,要么y轴远离了“地面”(NavMesh),要么离开了烘培的”地面”。请检查与更改相关寻路主角的Y轴位置。

问题3:
用户拿到的工程文件,发生打不开的错误(不报错)。 也就是Unity 无论怎样都打不开指定的Unity 项目?
解答:
一般是因为Unity 对中文支持的不好,所以工程所在路径不能有中文。 请把你的工程文件的所在路径进行检查,把相关中文路径去除即可。

问题4:
当用户导入*.unitypackage 文件的过程中显示错误信息: “Error While importing package: Couldn’t decompress package.Failed importing package …..”?。
解答:
这个问题一般也是因为Unity 对中文支持的不好,所以需要导入的.unitypackage 文件所在路径不能有中文。 请把你的“包”(或者一些.unitypackage 插件)文件的所在路径进行检查,把相关中文路径去除即可。

问题5:
用户在运行游戏工程过程中,发现没有声音? 且计算机硬件没有问题? 在Unity 的Console 窗口中有如下信息大量显示: “ There are 2 audio listeners in the scene” ?
解答:
原因是你当前场景中存在2个以上的“Audio listeners”, 请只保留一个即可,多余的删除。 一般也都发生在学员引入Unity 自带的“第一人称/第三人称”角色的时候发生的现象。 你可以把主摄像机的Audio Listener 组件暂时禁用或者删除掉即可。

问题6:
程序运行过程中最容易出现的一个运行时错误信息: “NullReferenceException: Object reference not set to an instance of an object” ?
解答:
这是典型的“空引用错误”, 本质是原本需要实例化的游戏对象没有成功的加载,程序后面的指令已经在用上面没有实例化的对象所造成的! 。 具体问题还需要具体分析,看是否什么组件没有加载,或者一些 GetCompont() 与 Resource.Load() 等方法的路径名称是否正确等。

问题7:
程序运行过程中出现的一个运行时错误信息: “MissingReferenceException: The object of type ‘GameObject’ has been destroyed”
解答:
缺少引用异常!通常原因是由于指定的游戏对象已经销毁了,而其他代码还要访问(调用),造成的错误!。

问题8:
程序运行过程中出现的一个运行时错误信息:“InvalidCastException: Cannot cast from source type to destination type”?
解答:
无效的转换异常: 不能从源类型转换到目标类型。 需要学员仔细检查程序中强制转换是否合理? C# 的“装箱拆箱”是否正确等。

问题9:
“UnassignedReferenceException: The variable goLineRedDiamend_Prefab of ‘ScenceManager’ has not been assigned”?
解答:
未分配引用异常。 通常是脚本中的public 类型字段,在游戏运行过程中,没有给予附加相对应的“预设”或者游戏对象所造成的。 即: 没有给脚本的公共字段添加参数造成的。

问题10:
学员在做关于Animation 帧动画时出现的错误:“AnimationEvent has no function name specified”?
解答:
在Animation 中你定义了一个事件,而没有给事件添加对应的“事件方法”,导致出错!

    以上是我总结出的目前十个常见编译期与运行期错误,请大家多提宝贵意见,不断丰富这个文档使得初学者少走 弯路", 谢谢!

你可能感兴趣的:(untiy,unity)