在用引擎版本:2.12.0
个人笔记,有些用词易与文档混淆,注意辨别
程序主要结构
前置定义
大致结构
- 最外层为场景,也可以叫做页面,一个游戏可以有多个不同的场景
- 页面内可以有多个节点,可以嵌套形成子节点
每个节点内可以添加很多组件
- 组件用来控制、增强节点,也可以操作(脚本)子节点(甚至父节点)
傻瓜理解
节点:在 IDE能添加var
属性的,都是节点
组件:与节点相反,没有var
等属性的,都是组件
a. 节点
- 场景由
节点
组成,包括父节点,子节点等。
获得方式:
- 通过
runtime
中this.varName
获取(varName为节点的var属性值) - 通过
this.owner
获取到该组件自身的节点 - 通过
节点.getChildByName()
获取到子节点 - 通过
节点.parent
获取到父节点
b. 组件
- 组件添加在节点下,也能直接添加到场景下
获得方式:
通过
节点.getComponent('要获取的类型')
指定要获取的组件类型 如以下
Laya.Script
Laya.RigidBody
- 如果添加了多个同类型的组件(
Script
),可以直接import
该文件,作为类型获取
1. 场景(页面)
一个游戏场景即为一个页面,文件后缀为.scene
场景内的所有节点,组件都可以通过代码实例化相应对象来添加,不是必须通过IDE添加
1.1 Sprite 节点 类 laya.display.Sprite
最常用的节点,类似html
的div
,可使用自身,也可以充当其他对象的容器
1.2 其他节点
1.3 物理组件
1.3.1 刚体 RigidBody
类 Laya.RigidBody
刚体类型 type
:静力学类型static
、动力学类型dynamic
、运动学类型kinematic
static
静止不动,无论施加怎样的力都不会移动,不受重力影响,速度为零且不可设置 。dynamic
会根据受到的力进行移动, 会受到重力的影响,可设置速度。kinematic
不会根据受到的力进行移动,不受重力影响,可设置速度
这意味着只有 dynamic
才能发生碰撞效果(添加碰撞体后)
1.3.2 碰撞体 collider
碰撞体基于刚体,矩形碰撞体BoxCollider
,圆形碰撞体CircleCollider
,链形碰撞体ChainCollider
,多边形碰撞体PolygonCollider
,边线碰撞体Edgecollider
(IDE暂时没有)
- 多边形碰撞体
PolygonCollider
只支持凸边形 - 链形碰撞体
ChainCollider
仅提供单侧碰撞。。
1.3.3 关节 Joint
2. 动画
3. 预设
可以将一组节点(组成的图像、有特定功能的按钮等)直接拖动到 IDE的工程文件区域,即自动生成预设文件。
可以很方便的从预设文件直接生成节点组。
可以直接 IDE 拖动预设文件到场景中。也可以使用代码加载预设文件,如下
在script脚本中增加此注释,在 IDE中把预设文件拖入名为ball
的属性中即可
/** @prop {name:ball,tips:"球",type:Prefab}*/