初次接触Unity,我选择了以跟书(Unity移动游戏开发 --【澳】乔恩.曼宁 帕里斯.巴特菲尔德-艾迪生 著)做项目“地精寻宝”为熟悉软件功能的开始,这也是我初次在网络上以博客的形式记录下自己的学习心得,在此记录下我遇到的一些报错问题和最终解决的办法,帮助更多初学者,也为我以后的问题解决提供思路。
- 对于 “Object reference not set to an instance of an object” 错误: - 含义:未将对象引用设置到对象的实例,即尝试访问空对象的成员或属性。 - 成因:未初始化变量、调用返回 `null` 的方法或属性并操作、访问对象属性或方法时对象为 `null` 。 - 解决:检查代码找出为空对象并初始化,使用条件语句或空值合并运算符确保对象不为空,或使用 `try-catch` 处理错误。
- 对于 “Cannot implicitly convert type 'SpriteSwapper' to 'UnityEngine.Sprite'” 错误: - 含义:不允许的隐式类型转换,`SpriteSwapper` 类型不能自动转换为 `UnityEngine.Sprite` 类型。 - 成因:两种类型无直接关联或兼容性,尝试了不合法的自动转换。 - 解决:明确进行类型转换,如通过类中的获取方法、显式类型转换,但显式转换要注意可能的运行时异常。
- 对于特定的 类中方法的 `NullReferenceException` : - 含义:在该方法中尝试访问未初始化或为空的对象。 - 成因:可能是该对象为空。 - 解决:检查调用该方法前该对象的初始化和赋值,以及相关创建或更新代码确保其正确设置。
- foreach statement cannot operate on variables of type 'Resettable' because 'Resettable' does not contain a public instance or extension definition for 'GetEnumerator'”: - 成因:`Resettable`类未定义`GetEnumerator`方法,无法进行`foreach`循环遍历。 - 解决办法:让`Resettable`类实现`IEnumerable`接口并添加`GetEnumerator`方法的实现。
- UnassignedReferenceException: The variable connectedObject of Rope has not been assigned. You probably need to assign the connectedObject variable of the Rope script in the inspector.”: - 成因:`Rope`脚本中的`connectedObject`变量未被赋值。 - 解决办法:在 Unity 编辑器的 Inspector 面板中为其赋值,或在代码中合适的位置进行初始化。
另外,由于该书所提供的资源并不完全且不方便理解,如果有在做这个项目或者类似游戏的,我把项目的main scene绑定在了这篇文章,有问题的可以以此作为参考或者问我。
本文为个人心得记录分享,并非权威内容。