@property属性装饰器。可通过编辑器对脚本属性做调整。
下方是常用类型的列举:
const { ccclass, property } = cc._decorator;
export enum xxxx { aaa, xxx }
import DialogGuide from "./modules/Game/guide/DialogGuide";
/**
* 属性装饰器测试
* @author 神兽白泽
*/
@ccclass
export default class PropertyTest extends cc.Component {
//节点
@property({ type: cc.Node })
private stick: cc.Node = null;// private 只有自己能用
//预制体组件
@property({ type: cc.Prefab })
protected pre1: cc.Prefab = null;// protected 只有被继承的类才能用
//lbl组件
@property({ type: cc.Label })
public lbl_desc: cc.Label = null;// public 全都能用
//动画组件
@property({ type: cc.Animation })
private BodyAnim: cc.Animation = null;
//骨骼动画组件
@property({ type: sp.Skeleton })
private CocosAnim: sp.Skeleton = null;
//坐标
@property()// { type: cc.Vec3 } 指定 type 被警告,不知道为什么
private pos_v3: cc.Vec3 = cc.Vec3.ZERO;
@property({ type: cc.Vec3 })
private arr_vec3: cc.Vec3[] = [];//如果要数组
//数字
@property
private max_R: number = 80;
@property({ type: cc.Integer, tooltip: '我也是整数' })
private zhengshu: number = 100;
//字符串
@property()
private str666: string = '';
//精灵纹理
@property({ type: cc.SpriteFrame })
bulletSprite = null;
//Texture2D
@property({ type: cc.Texture2D })
private texture: cc.Texture2D = null;
//相机组件
@property({ type: cc.Camera })
private camera: cc.Camera = null;
//回调函数
@property({ type: cc.Component.EventHandler, tooltip: "这是一个回调" })
private onComplete: cc.Component.EventHandler = null;
@property({ type: [cc.Component.EventHandler], tooltip: '这是一个回调组' })
private a_call_back: cc.Component.EventHandler[] = [];
//this.a_call_back.forEach(c => c.emit([参数1, 参数2, ...]));//使用方法
//枚举类型
//export enum xxxx { aaa, xxx }//写到类上边,装饰器用到了,需要写在class前面。
@property({ type: cc.Enum(xxxx) })
private test_enum: xxxx = xxxx.aaa;
//bool类型
@property({ type: false })//这样不会报警告。用CCBoolean,cc.Boolean,Boolean都会被警告-或者不写type
private test_bool = false;
// 脚本类型 需要引入脚本 import DialogGuide from "./modules/Game/guide/DialogGuide";
@property({ type: DialogGuide })
private test_script: DialogGuide = null;
//get 与 set
private _edit_play: boolean = false;
@property({ displayName: '勾选框' })
get edit_play(): boolean {
return this._edit_play;
}
set edit_play(value: boolean) {
this._edit_play = value;
}
// 设置编辑器不可见 visible
@property()// 加下划线_ 表示编辑器不可见
private _visi: number = 80;
@property({ visible: false })// 加属性 visible: false 表示编辑器不可见,优先级更高,超过下划线_
private visi: number = 80;
}
属性装饰器的其他属性,摘抄自cc.d.ts
export interface IExposedAttributes {
type?: any;//指定属性的类型。
url?: string;
visible?: boolean | (() => boolean);//控制是否在编辑器中显示该属性。
displayName?: string;//该属性在编辑器中的显示名称。
displayOrder?: number;
tooltip?: string;//该属性在编辑器中的工具提示内容。
multiline?: boolean;
readonly?: boolean;//指定该属性是否为可读的。
min?: number;//当该属性为数值类型时,指定了该属性允许的最小值。
max?: number;//当该属性为数值类型时,指定了该属性允许的最大值。
step?: number;//当该属性为数值类型时并在编辑器中提供了滑动条时,指定了滑动条的步长。
range?: number[];//当该属性为数值类型时,指定了该属性允许的范围。
slide?: boolean;//当该属性为数值类型时,是否在编辑器中提供滑动条来调节值。
serializable?: boolean;//该属性是否参与序列化和反序列化。
formerlySerializedAs?: string;//该属性的曾用名。
editorOnly?: boolean;//该属性是否仅仅在编辑器环境中生效。
override?: boolean;//是否覆盖基类中的同名属性。
animatable?: boolean;
unit?: string;
radian?: boolean;//转换为弧度
}