首页 前端知识 Cocos Creator 定义属性指南(JS和TS)

Cocos Creator 定义属性指南(JS和TS)

2024-05-29 10:05:13 前端知识 前端哥 257 604 我要收藏

目录

简单说明

1.TS写法

2.JS写法


简单说明

  • 这是一个Cocos Creator 如何定义脚本属性的指南。
  • 我这边整理了两个版本,JS和TS,如果还有其他方式,欢迎您的留言。
  • 对我个人来说,刚开始写枚举和数组的时候会有点不习惯。还经常容易忘记怎么写。
  • 在cocos creator 3.x 中官方主推的是:Typescript。
  • 在cocos creator 2.x 中使用JavaScript的项目会比较多。

1.TS写法

首先创建一个TsCase.ts的脚本,然后复制下方即可。

代码如下(示例):

const { ccclass, property } = cc._decorator;
// 枚举-1
enum EnumType_1 {
    val_1,
    val_2,
    val_3,
}
// 枚举-2
var EnumType_2 = cc.Enum({
    val_1: 1,
    val_2: 2,
    val_3: 3,
})
@ccclass
export default class TsCase extends cc.Component {
    // 大括号写法
    // ------------------------------------------------------------
    //定义枚举
    @property({
        type: cc.Enum(EnumType_1),
        displayName: '常用的定义枚举',
        tooltip: ''
    })
    enum_type_1: EnumType_1 = EnumType_1.val_1
    @property({ type: EnumType_2 })
    enum_type_2 = EnumType_2.val_1
    //定义数组
    @property({ type: [cc.Node] })
    array_2: Array<cc.Node> = new Array(3);
    //定义类型
    @property({ type: cc.Node })
    node_2: cc.Node = null;    // 定义节点类型

    // 简单定义
    // ------------------------------------------------------------
    @property([cc.Node])
    array_1: cc.Node[] = [];    // 定义数组
    @property(cc.Node)
    node_1: cc.Node = null;    // 定义节点类型
    @property
    num_1: number = 1;           // 定义整数类型
    @property
    str_1: string = 'str_1';     // 定义字符类型
    @property
    flag_1: boolean = true;       // 定义布尔类型

}

2.JS写法

首先创建一个JsCase.js脚本文件,然后复制下方即可。

代码如下(示例):

// 枚举-1
var EnumType_1 = cc.Enum({
    val_1: 1,
    val_2: 2,
    val_3: 3,
})
// 枚举-2
var EnumType_2 = {
    val_1: 1,
    val_2: 2,
    val_3: 3,
}
// 将 cc.Class 创建的类赋值给 JsCase 变量
var JsCase = cc.Class({
    // 设置类名
    name: "JsCase",
    // 继承类(只有继承cc.Component才能挂载到场景的节点上)
    extends: cc.Component,
    // 定义属性
    properties: {
        // 标准定义-基本用法
        // ------------------------------------------------------------
        // 定义一个数组节点
        array: {
            default: [], // 一定要有默认值
            type: [cc.Node], // 括号中间定义数组类型
            displayName: "数组节点类型", // displayName:在 属性检查器 面板中显示成指定名字
            tooltip: "请定义数组的长度", // tooltip:在 属性检查器 面板中添加属性的 Tooltip
            // visible:设为 false 则不在 属性检查器 面板中显示该属性
            // serializable:设为 false 则不序列化(保存)该属性
        },
        // 定义一个枚举类型 - 1
        enum_type_1: {
            default: EnumType_1.val_1,
            type: EnumType_1,
        },
        // 定义一个枚举类型 - 2
        enum_type_2: {
            default: EnumType_2.val_1,
            type: cc.Enum(EnumType_2),
        },
        // 定义一个节点类型
        node_3: {
            default: null, // default:设置属性的默认值,这个默认值仅在组件 第一次 添加到节点上时才会用到
            type: cc.Node, // type:限定属性的数据类型,详见 CCClass 进阶参考:type 参数
        },
        // 定义一个整数类型
        num_3: {
            default: 3,//默认值
        },
        // 定义一个字符类型
        str_3: {
            default: 'str_3',
        },
        // 定义一个布尔类型
        flag_3: {
            default: true,
        },
        // ------------------------------------------------------------

        // 该方式仅适用于:基本数据类型:整数-number、字符-string、布尔-boolean
        // ------------------------------------------------------------
        // 简单定义-2
        node_2: {
            default: null,
            type: cc.Node// 定义节点类型
        },

        // 简单定义-1
        node_1: cc.Node,    // 定义节点类型
        num_1: 1,           // 定义整数类型
        str_1: 'str_1',     // 定义字符类型
        flag_1: true,       // 定义布尔类型
        // ------------------------------------------------------------

    },
});

转载请注明出处或者链接地址:https://www.qianduange.cn//article/9943.html
标签
游戏引擎
评论
会员中心 联系我 留言建议 回顶部
复制成功!