脚本属性的API文档:https://developer.playcanvas.com/en/api/pc.ScriptAttributes.html

添加脚本属性

add(name, args);

  • name:属性名称
  • args:性质

简单示例:

1
2
3
4
5
6
7
8
9
Choose.attributes.add('overlapAniSpeed', {
type: 'number',
title: 'ChooseAni',
description: '动画的播放时间',
placeholder: 's',
default: 0.08,
max: 0.5,
min: 0.01
});

这是一个叫做Choose的脚本,我们为其添加了一个教overlapAniSpeed的属性。这个属性是数字,编辑器中所看到的命名是ChooseAni,鼠标放上去可以看到介绍,单位是s,默认为0.08,最大值0.5,最小值0.01。

args

名称 类型 作用
args.type string 属性种类(”boolen”, “number”, “string”, “json”, “asset”, “entity”, “rgb”, “rgba”, “vec2”, “vec3”, “vec4”, “curve”)
args.assetType string 属性种类的更细分,为编辑器的拾取器所用,默认为all
args.default all 属性的默认值
args.title string 编辑器中的属性命名
args.discription string 编辑器中的属性介绍
args.placeholder string, string[] 单位,对于vec2, vec3等多值属性使用一个数组表示
args.array boolean 这个属性是否是个数组
args.size number 如果这个属性是数组,那么这个数组的大小
args.max number 如果这个属性是number,其的最大值,若最大值最小值都被设置,则编辑器中将会出现滑块
args.min number 如果这个属性是number,其的最小值,若最大值最小值都被设置,则编辑器中将会出现滑块
args.precision number 如果属性是number,带有浮点值的精度级别。
args.step number 如果这个属性是number,拖动值时的步进大小
args.curves string[] 如果属性是curve,曲线的名字数组
args.color string String of color channels for Curves for field type ‘curve’, can be any combination of rgba characters. Defining this property will render Gradient in Editor’s field UI.
args.enum object[] 枚举值,在编辑器中将产生下拉栏
args.schema object[] List of attributes for type ‘json’. Each attribute description is an object with the same properties as regular script attributes but with an added ‘name’ field to specify the name of each attribute in the JSON.

Try一Try

如果现在我们有一个actorMovement的脚本,策划事r特别多,改来改去的。我们不想每次改个数就得叫我们在代码里改,所以就把变量暴露在编辑器,让策划自个r调去。

此次我们要暴露三个变量。其中一个是actor类型,有三种可能取值:Saber,Lancer和Archer;另一个是移动速度,从1-5的取值范围,只精确到小数点后一位。还有一个是衣服的颜色,肯定是个rgb值;

设计

actor类型的属性就叫actorType吧,咱们小学二年级就学过这种情况应该用枚举值。

速度就叫speed,设置最大值最小值,单位是m/s。

颜色也一样,是rgb。

策划的英文还不咋地r,还得给他整点r中文。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 角色种类
ActorMovement.attributes.add('actorType', {
type: 'string', // 变量类型
title: '角色种类', // 编辑器中变量的名字
description: '角色的种类', // 编辑器中鼠标放上去的解释
enum: [ // 枚举值
{'Saber': 'saber'},
{'Lancer': 'lancer'},
{'Archer': 'archer'}
],
default: 'saber', // 默认值
});
// 角色速度
ActorMovement.attributes.add('speed', {
type: 'number',
title: '速度',
description: '角色移动速度',
placeholder: 'm/s',
default: 3,
min: 1,
max: 5,
precision: 1
});
//角色衣服颜色
ActorMovement.attributes.add('clothColor', {
type: 'rgb',
title: '衣服颜色',
description: '角色衣服的颜色',
default: [1, 1 , 1]
});

然后把这个脚本挂在一个物体上,就是如下的显示哒!

编辑器中的描述

枚举值变量

调整颜色变量