ps:目前还没接触3d,所以以下均为2d的相关问题。
1、sprite设置九宫格后缩放时不生效
- 检查sprite的type是否为Sliced类型(原因》)
- 使用矩形变换工具修改contentSize,而不是缩放大小
2、使用Animation.play播放某个clip无效(动画没有切换/没有出现动画)
- 检查该clip是否挂载到了Animation的clips属性里
- 检查该clip是否有效
- 检查该clip使用的node的active属性是否为true(在creator里对应的是属性检查器里节点名称前面那个复选框是否勾选)
顺便提下:
通常,clip的创建步骤为:
资源管理器中右键->创建->Animation Clip->将clip挂载(拖拽)Animation组件; 做好的动画剪辑(Animation clip)可以挂载到任意节点的Animation组件上,但是动画剪辑用过的节点不可移动位置/修改节点名,否则会出现各种问题。
3、在动画编辑器里编辑clip时点击添加属性时没有sprite->spriteFrame选项
- 检查当前clip是否已经被挂载,即:将资源管理器里创建的clip拖拽到某个sprite的clips里。
4、改变Label组件string属性值后显示上不更新的问题
- 把使用find查找组件改为使用getComponent问题解决,原因不明|||(不会真的是bug吧?) 顺便说下cocos的组件获取: getChildByName只能获取直属子节点,并且获取到的是“节点”,需要获取组件还需getComponent
5、物理引擎
物理效果(如重力)不生效
- 检查是否给组件添加了刚体组件(RigidBody)
刚体被穿透
- 检查是否给碰撞双方的组件添加了碰撞体组件(BoxCollider、CircleCollider等)
- 检查物体的可见大小是否和碰撞体等大
通过instantiate动态创建的节点碰撞检测不生效
- 可以通过下面的代码开启碰撞体调试(将碰撞体和碰撞分组显示出来)检查创建的节点上是否有碰撞体;
- 检查创建的节点和碰撞体是否在同一个节点上:
PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb |
EPhysics2DDrawFlags.Pair |
EPhysics2DDrawFlags.CenterOfMass |
EPhysics2DDrawFlags.Joint |
EPhysics2DDrawFlags.Shape;
关于碰撞检测和物理引擎的详细用法可以查看cocos官方的这个视频:
cocos Creator 3.x 做一款经典射击游戏 | 零基础入门 – 搜栈网 (seekstack.cn)
—最后更新于2022/9/24— 先记到这里,后面再补充。
nice