Read this manual in English

属性

Defold 对于游戏对象, 组件和 GUI 节点暴露了很多可读可写可用作动画的属性. 分为以下各种类型:

  • 游戏对象变化 (位置, 旋转和缩放) 和组件属性 (比如 sprite 的 pixel size 或者碰撞对象的 mass)
  • Lua 脚本属性 (详情请见 脚本属性教程)
  • GUI 节点属性
  • shaders 和 材质文件里的着色器常量 (详情请见 材质教程)

这些属性, 有的用一般函数访问, 有的用特定的函数访问. 大多数都能用于动画. 引擎提供的属性动画功能比(在 update() 函数里自己做动画更方便, 而且性能更好.

组合类属性 vector3, vector4 还有 quaternion 包含其子属性 (x, y, zw). 可以用属性名加点 (.) 来访问. 比如, 设置位置的x子属性:

-- Set the x positon of "game_object" to 10.
go.set("game_object", "position.x", 10)

go.get(), go.set()go.animate() 函数第一个参数是游戏对象引用, 第二个参数是属性id. 游戏对象或者组件的引用可以是字符串, hash 或者 URL. URL 引用详情请见 定位教程. 属性id是属性名字符串或者hash:

-- Set the x-scale of the sprite component
local url = msg.url("#sprite")
local prop = hash("scale.x")
go.set(url, prop, 2.0)

对于 GUI 节点, 访问属性需要特定函数并且需要提供节点引用作为第一个参数:

-- Get the color of the button
local node = gui.get_node("button")
local color = gui.get_color(node)

游戏对象属性和组件属性

所有游戏对象属性和一些组件属性可以在运行时进行读写. 使用 go.get() 函数读取属性, 使用 go.set() 函数写入属性. 很多属性都可以使用 go.animate() 函数制作属性动画. 还有一小部分属性是只读的.

get
表示可以使用 go.get() 读取.
get+set
表示可以使用 go.get() 读取并且可以使用 go.set() 写入. 数值类型的属性可以使用 go.animate() 制作属性动画.

游戏对象属性

属性 描述 类型  
position 游戏对象的位置坐标. vector3 get+set
rotation 游戏对象的旋转, 以四元数表示. quaternion get+set
euler 游戏对象的旋转, 以欧拉角表示. vector3 get+set
scale 游戏对象的非等比缩放, 以向量表示. 比如在 x 和 y 方向放大2倍, 就是 vmath.vector3(2.0, 2.0, 0) vector3 get+set

对于位移专用的函数也是有的; 即 go.get_position(), go.set_position(), go.get_rotation(), go.set_rotation(), go.get_scale()go.set_scale().

SPRITE 组件属性

属性 描述 类型  
size sprite 原始尺寸 — 从图集图片而定的尺寸. vector3 get
image sprite 纹理路径hash. hash get
scale sprite 非等比缩放. vector3 get+set
material sprite 使用的材质. hash get+set
cursor 动画播放头位置 (取值范围 0–1). number get+set
playback_rate 逐帧动画播放速率. number get+set

COLLISION OBJECT 组件属性

属性 描述 类型  
mass 碰撞对象的质量. number get
linear_velocity 碰撞对象当前的线性速度. vector3 get
angular_velocity 碰撞对象当前的旋转速度. vector3 get
linear_damping 碰撞对象当前的线性阻尼. vector3 get+set
angular_damping 碰撞对象当前的旋转阻尼. vector3 get+set

MODEL (3D) 组件属性

属性 描述 类型  
animation 当前动画. hash get
texture0 模型的纹理路径hash. hash get
cursor 当前动画播放头 (取值范围 0-1). number get+set
playback_rate 当前动画播放速率. 即播放速度倍数. number get+set
material 模型所用材质. hash get+set

LABEL 组件属性

属性 描述 类型  
scale 文本标签的缩放. vector3 get+set
color 文本标签的颜色. vector4 get+set
outline 文本标签的轮廓. vector4 get+set
shadow 文本标签的阴影. vector4 get+set
size 文本标签的大小. 如果开启换行的话文本标签大小会被约束. vector3 get+set
material 文本标签所用材质. hash get+set
font 文本标签所用字体. hash get+set

GUI 节点属性

GUI 节点也有属性, 但是要使用特定的读写函数. 每个属性都有对应的 get- 和 set- 函数. 还有一系列预定义常量可以用于属性动画. 引用属性可以使用属性名字符串, 或者属性名字符串hash.

  • position (或 gui.PROP_POSITION)
  • rotation (或 gui.PROP_ROTATION)
  • scale (或 gui.PROP_SCALE)
  • color (或 gui.PROP_COLOR)
  • outline (或 gui.PROP_OUTLINE)
  • shadow (或 gui.PROP_SHADOW)
  • size (或 gui.PROP_SIZE)
  • fill_angle (或 gui.PROP_FILL_ANGLE)
  • inner_radius (或 gui.PROP_INNER_RADIUS)
  • slice9 (或 gui.PROP_SLICE9)

注意颜色属性是一个 vector4 分别对应 RGBA 值:

x
红色
y
绿色
z
蓝色
w
透明度

GUI 节点属性

属性 描述 类型  
color 节点颜色. vector4 gui.get_color() gui.set_color()
outline 节点轮廓. vector4 gui.get_outline() gui.set_outline()
position 节点位置. vector3 gui.get_position() gui.set_position()
rotation 节点旋转, 以三轴欧拉角表示. vector3 gui.get_rotation() gui.set_rotation()
scale 节点缩放, 以三轴缩放倍数表示. vector3 gui.get_scale() gui.set_scale()
shadow 节点阴影. vector4 gui.get_shadow() gui.set_shadow()
size 界定非等比大小. vector3 gui.get_size() gui.set_size()
fill_angle 饼图填充角, 以逆时针角度表示. number gui.get_fill_angle() gui.set_fill_angle()
inner_radius 饼图内半径. number gui.get_inner_radius() gui.set_inner_radius()
slice9 九宫格节点四边距. vector4 gui.get_slice9() gui.set_slice9()