求助 cc.Label prototype 应该怎么写

你这样改,引擎里似乎加入了游戏的东西,似乎不有些不太好。。。(感觉完全不是纯引擎了。。),还是在自己的游戏里封装一个比较好。。(个人认为)

我个人认为这个需求还不值得去自定引擎

是的,我也是看到这个问题,才尝试了几种方法,在项目中没有这样用。

项目中实际使用的,可以参考一下。复写的getter

//文字本地化

let localizedWords = require("en")

window.TextWords = {

    getText: function(key) {
        return localizedWords[key] || key
    }

}

//复写label string取值,用以多语言直接替换

let originDescriptor = Object.getOwnPropertyDescriptor(cc.Label.prototype, "string")

let originGet = originDescriptor.get

originDescriptor.get = function() {

    let originText = originGet.call(this)

    if(CC_EDITOR) {

        return originText

    } 

  

    let newText = TextWords.getText(originText)

    return newText

}

Object.defineProperty(cc.Label.prototype, "string", originDescriptor)

let oldFormatStr = cc.js.formatStr

cc.js.formatStr = function() {

    if(arguments.length > 0 && !CC_EDITOR) {

        arguments[0] = TextWords.getText(arguments[0])

    }

    return oldFormatStr.apply(this, arguments)

}
2赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。