你这样改,引擎里似乎加入了游戏的东西,似乎不有些不太好。。。(感觉完全不是纯引擎了。。),还是在自己的游戏里封装一个比较好。。(个人认为)
我个人认为这个需求还不值得去自定引擎
是的,我也是看到这个问题,才尝试了几种方法,在项目中没有这样用。
项目中实际使用的,可以参考一下。复写的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天后自动关闭。不再允许新的回复。