原文地址:https://support.unity3d.com/hc/en-us/articles/206804326-Problems-with-Project-Space-Shooter
症状
当试着学习Space Shooter教程时,遇到许多问题。其中的一些问题以及其解决方案罗列于下方:
- 问题1
- Rotator脚本并没有使小行星旋转。
- 问题2
- 边界不能正常运作。
- 问题3
- 为了发射子弹,我被告知需要使用
Input.GetButton("Fire1")
。
- 为了发射子弹,我被告知需要使用
- 问题4
- 我已经完成了教程中的太空飞船、背景以及灯光。我按照教程的说法编写脚本让太空飞船移动,但是决定测试该脚本。我的太空飞船成功移动了,但是在移动了一段特定的距离后,它返回了原始位置并且再也不能移动。
- 问题5
- UnassignedReferenceException:GameController的scoreText变量没有赋值。你可能需要在Inspector界面给这个变量赋值。
- 问题6
- 从场景中移除GameObject,但不是从层级上移除。
- 问题7
- 当构建Webplayer版本时遇到“The content was stopped because a fatal error has been detected”错误。
- 问题8
- 每次我进入Play模式,Unity总是卡死。
原因
- 问题1
- 没有考虑到Unity是大小写敏感的。编写脚本时,书写的Unity API函数没有正确大写或者打字错误,丢失了分号等。(例如写了小写的start函数,或者小写o的onTriggerExit)
- 问题2
- 边界盒子不够高;子弹不是从盒子内部开始。
- 问题3
- 你不知道“Fire1”是什么或者在哪里。
- 问题4
- 你忘记了改变边界的值。
- 问题5
- 你使用了遗留的GUIText组件。
- 问题6
- 不使用Destroy移除物体,否则会错误地添加Collider(Collider添加在子物体上而不是父物体上)。
- 问题7
- 在Project Settings的Graphics区里,你只有一个shader(Diffuse),但是你还需要“UI/Default”和“UI/Default Font”。
- 问题8
- 存在一个死循环。
解决方案
- 问题1
- 修正大小问题,或者打字错误。(例如大写S的Start函数,大写O的OnTriggerExit)
- 问题2
- 在需要调整缩放的方向调整盒子(例如Y方向)来修复错误。
- 问题3
- “Fire1”是一个Unity中预设的配置集,引用了一些按钮,用来发射子弹。换句话说,Unity默认将这串字符串映射到了一些按钮上。想要检查具体情况,请通过Edit->Project Settings->Input菜单项进入,然后检查各个不同的预设配置。
- 问题4
- 在Inspector界面重置边界。
- 问题5
- 将GUIText scoreText的字段声明改为Text scoreText。在Start函数里添加这样一行代码来引用该Text元素。
scoreText = GetComponent<Text>()
。如果随后你得到个错误,说该Text没有正确引用物体,那么只需要移除Start函数里这最后一行。
- 将GUIText scoreText的字段声明改为Text scoreText。在Start函数里添加这样一行代码来引用该Text元素。
- 问题6
- 把Collider从子物体移到父物体上。
- 问题7
- 转到 Edit->Project Settings->Graphics,手动添加“UI/Default”和“UI/Default Font”shader,或者点击齿轮图标然选择“Reset”也能添加这些shader。
- 问题8
- 找到while(true)循环,或者其他任何能造成无限迭代的循环,并修复它们。
更多信息
见如下的链接:
http://docs.unity3d.com/Manual/ConventionalGameInput.html
http://docs.unity3d.com/Manual/class-InputManager.html
http://docs.unity3d.com/ScriptReference/Input.html
http://stackoverflow.com/questions/27912745/unity-webplayer-crashes-with-ui-text-new-canvas-text
本文适应用于Unity 5.x版本。