bug1:生命周期函数的Start函数
理解unity生命周期函数的执行顺序是一件重要的事情,但是看下面这张图容易记忆错乱认为当对象从隐藏到活跃时调用OnEnable函数之后还会再调用Start函数。
反正笨狗我就是被自己真的蠢到了。
但是在游戏运行期间,如果将游戏物体从活跃状态转换成隐藏状态会调用OnDisable函数。如果再从隐藏状态转换成活跃状态Unity会自动调用OnEnable函数,但是OnEnable函数执行完之后不会再次执行Start函数。总之,Start函数和Awake函数只执行一次,OnEnable函数、OnDisable函数在游戏物体每次激活、失活时调用。
记忆生命周期函数执行顺序的同时也要注意执行时机。
bug2:摄像机的Transform组件位置设置错误
这个错误比较容易在2D游戏中遇到,就是一般摄像机的位置是如下图的:
重点在Position的Z轴位置,默认是-10
如果不小心把摄像机的位置修改了,比如红笔圈起来的位置被改为0,那么就会发现摄像机拍不到我们在场景中设置的任何物体。理解起来的话,就是想象自己拿着摄像机拍摄东西,如果需要拍摄的物体在摄像头后方的位置,那么摄像机自然拍不到我们需要的东西了。
bug3:写完脚本后忘记挂载到对应物体或者忘记给脚本属性赋值
这个也是非常容易犯的错误,特别是忘记给脚本一些属性赋值,会造成没有出现效果或者报脚本属性值为空的错误。
为了减少这种低级错误,我们写完代码之后要注意给物体设置好脚本。
bug4:使用cinemachine做摄像头跟踪效果的屏幕边缘限制镜头移动中添加的碰撞体应该是PolygonCollider2D
具体过程参考下面链接
【游戏开发实战】2D游戏摄像机镜头跟随,屏幕边缘限制镜头移动(使用Cinemachine组件)_unity相机添加边缘限制不动-CSDN博客
里面给CinemachineConfiner组件的Bounding Shape 2D添加PolygonCollider2D
组件,好像必须是PolygonCollider2D
组件,换成其他collider就无法达到这个效果。不知道是哪里出现了问题,我以为是任何类型的collider都能实现限制镜头移动范围的效果。
后记
这篇文章主要是记录自己学习unity遇到的一些bug,仅供提醒自己的作用。
也会不断记录新的bug