cocos 2.4.2 属性隐藏与序列化
//visible属性 默认true 可见 设置为false则不可见
@property({ type: cc.Node, displayName: "选择目标", visible: true})
target: cc.Node = undefined;
//使用一个布尔控制过度图是否显示 默认=false 不显示在编辑器中,设置为true时,过度图节点将显示
@property({ displayName: "使用过度图", visible: false })
use_Img_Load = false;
@property({ type: cc.Node, displayName: "过度图", visible() { return this.use_Img_Load; } })
Img_Load: cc.Node = undefined;
//这里的用法借鉴了博主 kingBook928
关于序列化
1:官方代码
export function property(
options?: {
type?: any;
url?: typeof cc.RawAsset;
visible?: boolean|(() => boolean);
displayName?: string;
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
} | any[]|Function|cc.ValueType|number|string|boolean): Function;
export function property(_target: Object, _key: any, _desc?: any): void;
2:设置意义
multiline: 换行
type: 类型
visible: 是否显示
url :cc.RawAsset资源类型
displayName: 面板显示的名字
tooltip :未知
multiline: 是否换行
readonly: 是否只读(锁定)
Function:方法
3:示例:
序列化枚举:
enum Arrangement //排序枚举
{
Horizontal = 1, //横排
Vertical = 2, //竖排
}
@property({type :cc.Enum(Arrangement),displayName:"排序枚举"})
private arrangement:Arrangement = Arrangement.Horizontal;
序列化数组:
@property({type:[cc.AudioClip]})
audioClips:cc.AudioClip[] = [];
序列化CC.RawAsset
@property({url:cc.Texture2D})
texture:cc.Texture2D = null;
或者
@property(cc.Texture2D)
texture:cc.Texture2D = null;
序列化滑动条
@property({range:[1,200],slide:true})//min:0,max:100,
nun:number= 0;
min,max会对 number数值进行限制
一般我们通常都是使用简便的用法如
@property(cc.SpriteAtlas)
spriteAtlas:cc.SpriteAtlas = null;
@property(cc.Node)
item:cc.Node = null;
//这里的用法借鉴了博主 HHGameDev
官方文档: 官方属性参考指南