版本:2.4.2
参考:
普通定义 cc.Integer/cc.String/cc.Node/cc.Prefab/boolea
@property(cc.Integer) //数字
public num:number = 0;
@property(cc.String) //字符串
public str:string = "";
@property(cc.Node) //cc.Node
public topNode:cc.Node = null;
@property(cc.Prefab) //预制体cc.Prefab
public prefab:cc.Prefab = null;
@property() //boolean
isLabelBatch: boolean = false;

提示 displayName/tooltip
给属性取一个别名,并增加一个提示
@property({type:cc.Integer, displayName:"金币", tooltip:"金币数量"})
public goldNum:number = 0;

数字最大值/最小值/步长 min/max/step
限制范围10-100,如果输入超出范围的数字,则会自动变更。例如输入5,会自动变成10;输入999会自动变成100。
点击属性框的上下箭头,变化值为步长step。例如点上箭头每次增加值为5。
@property({type:cc.Integer, min:10, max:100,step:5})
public goldNum:number = 0;

数字滑动条 slide
范围0-100的滑动条
@property({type:cc.Integer, min:0, max:100,slide:true})
public goldNum:number = 0;

下拉菜单 + 显示隐藏 Enum/visible
定义一个性别的下拉菜单,当选择男人时,显示男人年龄;当选择女人时,显示女人年龄。
const {ccclass, property} = cc._decorator;
export enum SexyType{
man=1,
woman=2
}
@ccclass
export default class HelloScene extends cc.Component {
@property({type:cc.Enum(SexyType),tooltip:"性别"})
sex:SexyType = SexyType.man;
@property({type:cc.Integer,visible(){return this.sex == SexyType.man}})
manAge = 1;
@property({type:cc.Integer,visible(){return this.sex == SexyType.woman}})
womanAge = 1;
}
下拉菜单如下图:

选择男人时,属性面板只显示男人年龄Man Age

选择女人时,属性面板只显示女人年龄Woman Age

值改变通知 notify
notify不支持ES6定义方式?反正我用TS没有这个属性。所以用get/set实现改变值通知。
实现金币的set/get方法,每当在属性面板变更goldNum,label的文本也会跟着变化。
这个set/get方式同时具有默认值效果,属性面板会显示默认值15。
@property(cc.Label) //金币文本
public label:cc.Label = null;
@property(cc.Integer) //金币get/set方法
public get goldNum(){
return this._goldNum;
}
public set goldNum(value){
this._goldNum = value;
this.label.string = this._goldNum + ""; //每当金币变化,则设置label文本
}
/**金币数量 */
private _goldNum:number = 15;

数组
比如你有排行榜前3名文本,则可以使用数组来添加属性。
@property([cc.Label]) //文本列表
public labelList:cc.Label[] = [];

下划线属性名不显示
_labelList2下划线命名,默认隐藏,在属性面板不会显示出来
@property([cc.Label]) //文本列表
public labelList:cc.Label[] = [];
@property([cc.Label]) //文本列表
public _labelList2:cc.Label[] = [];

事件
@property(cc.Component.EventHandler)
events: cc.Component.EventHandler[] = []

Editor参数
@menu
@executeInEditMode
@requireComponent
@disallowMultiple
const { ccclass, property, menu, executeInEditMode, requireComponent, disallowMultiple } = cc._decorator;
@ccclass
@menu("framework/Test") //显示cocos组件下拉菜单
@executeInEditMode //生命周期例如onLoad在编辑器下生效
@requireComponent(cc.Sprite) //依赖的组件,如果同一cc.Node下没有加上依赖的组件,则会报错
@disallowMultiple //同类型组件只能存在一个,否则报错
export default class Test extends cc.Component {
onLoad() {
}
}
浙公网安备 33010602011771号