在用引擎版本:2.12.0
个人笔记,有些用词易与文档混淆,注意辨别

程序主要结构

前置定义

大致结构

  • 最外层为场景,也可以叫做页面,一个游戏可以有多个不同的场景
  • 页面内可以有多个节点,可以嵌套形成子节点
  • 每个节点内可以添加很多组件

    • 组件用来控制、增强节点,也可以操作(脚本)子节点(甚至父节点)

傻瓜理解

节点:在 IDE能添加var属性的,都是节点
组件:与节点相反,没有var等属性的,都是组件

a. 节点

  • 场景由节点组成,包括父节点,子节点等。

获得方式:

  • 通过 runtimethis.varName获取(varName为节点的var属性值)
  • 通过 this.owner获取到该组件自身的节点
  • 通过 节点.getChildByName() 获取到子节点
  • 通过 节点.parent 获取到父节点

b. 组件

  • 组件添加在节点下,也能直接添加到场景下

获得方式:

  • 通过 节点.getComponent('要获取的类型')

    • 指定要获取的组件类型 如以下

      • Laya.Script
      • Laya.RigidBody
    • 如果添加了多个同类型的组件(Script),可以直接 import该文件,作为类型获取

1. 场景(页面)

一个游戏场景即为一个页面,文件后缀为.scene
场景内的所有节点,组件都可以通过代码实例化相应对象来添加,不是必须通过IDE添加

1.1 Sprite 节点 类 laya.display.Sprite

最常用的节点,类似htmldiv,可使用自身,也可以充当其他对象的容器

1.2 其他节点

实质上都是节点。官网的‘组件’说法让人混乱

1.3 物理组件

1.3.1 刚体 RigidBodyLaya.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}*/