总结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 中你定义了一个事件,而没有给事件添加对应的“事件方法”,导致出错!

    以上是我总结出的目前十个常见编译期与运行期错误,请大家多提宝贵意见,不断丰富这个文档使得初学者少走 弯路", 谢谢!
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款强大的游戏开发引擎,对于初学者来说,制作界面是一个很好的练习项目。首先,你需要先了解Unity的基本操作和界面布局。在学习过程中,推荐去官方网站或者YouTube上寻找相关的视频教程,这样可以更直观地了解Unity的工作流程和操作方法。 在制作界面的过程中,你可以在Unity的场景视图中对界面进行布局和设计。使用Unity提供的UI系统,你可以选择各种按钮、文本框、图片等控件,然后通过拖拽和调整的方式进行界面的布局和设计。 接着,你可以利用Unity的脚本系统给界面添加交互功能。通过编写简单的脚本,你可以实现按钮的点击事件、文本的内容更新等功能。这样就可以让你的界面更加生动和具有交互性。 当你完成了界面的设计和基本交互功能后,你可以进一步学习如何进行界面的优化和美化。比如调整UI元素的大小和位置,选择合适的颜色和字体,添加过渡效果等,来提升界面的用户体验。 最后,不要忘记在学习过程中遇到问题时,多查阅文档和求助社区。Unity拥有庞大的社区和丰富的文档资源,可以帮助你解决很多问题并且加速学习的过程。 总的来说,制作界面是一个很好的Unity初学者练习项目,通过这个过程你可以熟悉Unity的操作方法和工作流程,掌握一些基本的UI设计和交互编程技能。希望以上建议对你有所帮助,祝你学习顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值