当前位置:   article > 正文

Cocos技术派 | TS版各种属性声明详解_ts @property

ts @property

先来看一段代码:

  1. cc.Class({
  2.     extends: cc.Component,
  3.     properties: {
  4.         userID20,
  5.         userName"Foobar"
  6.     }
  7. });

这是一个CCClass类,用关键字 properties 声明了两个属性:userID和userName。

官方文档和范例代码里面都有讲JS的属性声明写法,这样的声明可以直接在属性面板里面显示,可以输入属性值,比较方便。

虽然JS写法很简单,但是我还是建议大家使用TS来写游戏逻辑,因为TS更规范,且兼容JS所有的语法特性。

Cocos Creator使用了Typescript的装饰器来做注解式写法,注解式的开发方式在很多语言里被广泛应用。

Creator使用 @property 注解声明属性,其本质上其实就是一个函数,详细的原理这里不讨论,我们只讨论用法。

1

一般节点属性

最常见的节点属性,例如cc.Nodecc.Labelcc.Sprite等,要点:

  • 使用@property注解,括号内参数是其类型

  • backGround 和label 是变量名,可以自定义

  • sp:cc.Sprite=null 是默认值,必须要给一个默认值

 TS 的代码如下:

  1.  // 声明一个Sprite属性
  2.  @property(cc.Sprite)
  3.  backGround: cc.Sprite = null;
  4.  // 声明一个Label属性
  5.  @property(cc.Label)
  6.  label: cc.Label = null;

这样声明之后,将脚本挂接在一个节点上,就可以在属性面板查看了,如下图:

图片

2

增加属性显示名

声明一个简单的节点属性,属性面板上会默认显示变量名,如果变量采用驼峰法命名,编辑器会将这个变量按照驼峰分成多个单词。

为了在属性面板上更加直观地显示,在声明属性时可以为其定义一个显示名称displayName,这样可在属性面板上显示中文:

  1. // 声明一个Sprite属性
  2. @property({
  3.     type: cc.Sprite,
  4.     displayName"背景"
  5. })
  6. backGround: cc.Sprite = null;
  7. // 声明一个Label属性
  8. @property({
  9.     type: cc.Label,
  10.     displayName"标题"
  11. })
  12. label: cc.Label = null;

属性面板上显示如下:

图片

3

增加属性提示说明

属性显示中文名之后已经很直观了,但是如果有一些属性用了简称,或者特定名称也很难理解,这个时候可以再增加一个提示说明,将鼠标悬浮在名称上就会浮现提示文字,代码如下:

  1. @property({
  2.     type: cc.Node,
  3.     displayName"底座",
  4.     tooltip"底部炮台的父节点"
  5. })
  6. baseNode: cc.Node = null;

打开属性面板,鼠标放在属性 底座 上,会有一个文字提示弹出,如下:

图片

4

整数型属性

有一些属性,可能只希望取整数,并且有最大最小值,比如人物血量,最大100,最小0,将 type 设置为 cc.Integer,并设置 min 和 max 即可,如下:

  1. @property({
  2.     type: cc.Integer,
  3.     displayName"血量",
  4.     min0,
  5.     max10,
  6.     tooltip"人物当前血量"
  7. })
  8. HP = 10;

属性面板上显示如下:

图片

如图所示,血量是个整数,在编辑器中调整大小的时候,最大不会超过10,最小不能小于0,而且不能输入小数。

5

下拉列表

要在属性面板上定义下拉列表,需要先定义一个枚举类型,TS有枚举类型,为了在属性面板上使用中文字符选项,我们必须使用Creator的枚举 cc.Enum.

  1. let SexyType = cc.Enum({
  2.     UNKNOWN: 0,
  3.     MAN: 1,
  4.     WOMAN: 2
  5. });
  1. @property({
  2.     type: cc.Enum(SexyType),
  3.     displayName"性别"
  4. })
  5. sex = SexyType.UNKNOWN;

属性面板上操作如下:

图片

6

定义文本框

默认值设为字符串即可,不需要定义type。

  1. @property({displayName"作者"})
  2. author = "大掌教";
  3. @property({ displayName"Q群" })
  4. QQ = "704391772";

属性面板如下:

图片

7

定义ValueType类型

如果定义的属性为cc.ValueType的子类(cc.Vec2,cc.Vec3,cc.Color,cc.Rect),设置默认值为其实例即可,不需要显示设置type。

  1. @property({
  2.     displayName"坐标"
  3. })
  4. pos: cc.Vec2 = new cc.Vec2(0);

属性面板如下:

图片

8

定义滑动条

如果不定义type,则滑动条默认是小数,如果要定义一个整数型滑动条,将type设为 cc.Integer 即可,另外还需要定义最大值 minmax,step,并且设置slide为 true

  1. @property({
  2.     type: cc.Integer,
  3.     min:0,
  4.     max:120,
  5.     step1,
  6.     slide: true,
  7.     displayName"年龄"
  8. })
  9. age = 32;

在属性面板上的样式如下:

图片

9

定义事件回调

设置 type 为 cc.Component.EventHandler,默认值设置为事件的对象,即可定义一个事件回调,可以在属性面板上绑定一个回调函数,类似 Button 的点击事件绑定回调函数。

  1. @property({
  2.     type: cc.Component.EventHandler,
  3.     displayName"双杀"
  4. })
  5. doubleKill = new cc.Component.EventHandler();

属性面板上显示如下:

图片

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/360002
推荐阅读
相关标签
  

闽ICP备14008679号