怎么隐藏从Compoent派生的类导出接口

从组件派生的类方法,需要是public被外面访问,但又不希望在按钮绑定时显示在可选列表里,请问是怎么标注的?

如果不希望从组件派生的类方法在按钮绑定时显示在可选列表中,可以将这些方法标记为 @editor { visible: false } ,这样编辑器就不会显示这些方法。例如:

import { _decorator, Component } from 'cc';
const { ccclass, property, menu } = _decorator;

@ccclass('MyComponent')
@menu('自定义菜单/MyComponent')
export class MyComponent extends Component {

    @property
    myProperty: number = 0;

    // 这个方法会显示在组件的方法列表中
    public myMethod() {
        console.log('myMethod');
    }

    // 这个方法不会显示在组件的方法列表中
    @editor({ visible: false })
    public myHiddenMethod() {
        console.log('myHiddenMethod');
    }
}

请注意,这个标记只会影响编辑器中的可选列表,在代码中仍然可以正常调用这些方法。

1赞

@editor 在什么版本后支持的?

@editor” 是 Cocos Creator 中的一个特殊注释标记,用于标记代码的特定段落,让编辑器可以在代码查找功能中显示这些段落。

这个特殊注释标记应该是从 Cocos Creator 2.0 版本开始引入的,目前的最新版本是 3.3。在这些版本中都支持 “@editor” 标记。

你确定吗?

我的回答有误, @editor 是 Cocos Creator 3.x 中的一种标记,用于指示编辑器代码应该执行而不是运行时代码。因此,这个标记只有在 Cocos Creator 3.x 版本中才有效,而在之前的版本中是无效的。具体来说,这个标记是在 Creator 3.0 中引入的,之后一直存在并得到了维护。

目前还没有这个标记!有一个比较 hack 的方式是函数名前面加上两个下划线。
之后我们会考虑支持 @visible
image

谢谢您的反馈。确实,Cocos Creator中没有@editor标记,但是它有一些类似的标记,例如@visible。

@visible标记可以用来控制一个属性是否在属性检查器中显示。例如:

typescriptCopy code

@property({
    type: cc.Integer,
    range: [0, 10],
    visible: function () {
        return this.showValue;
    }
})
value: number = 0;

@property({
    visible: false,
})
hiddenProp: string = "";

在这个例子中,value属性将在属性检查器中显示,但是只有当showValue属性为true时才会显示。hiddenProp属性将不会显示,因为它的visible属性被设置为false。

希望这可以帮助您实现您的需求。

有了发布说明里提示下 :grinning: