【分享】所有按钮添加点击音效,所有文本添加字体

实际开发中,经常需要为游戏添加音效和字体文件,这时候一个一个添加效率太低,这时候一键添加就简单许多了,可以节省很多时间


下面贴出代码,目前编辑器版本2.4.x,游戏初始化调用,自取
/**设置按钮点击音效 */
static SetButtonSound(): void {

    if (cc.Button.prototype["touchBeganClone"]) return;

    cc.Button.prototype["touchBeganClone"] = cc.Button.prototype["_onTouchEnded"];

    cc.Button.prototype["_onTouchEnded"] = function (event) {

        if (this.interactable && this.enabledInHierarchy) {

            // 播放自己的按钮音效

            cc.audioEngine.playEffect(PlayAudioMgr.btnClickSound, false);

        }

        this.touchBeganClone(event);

    }

}

/**添加字体 */
public static AddFont(): void {

    if (cc.Label.prototype["onLoadClone"]) return;

    cc.Label.prototype["onLoadClone"] = cc.Label.prototype["onLoad"];

    cc.Label.prototype["onLoad"] = function () {

        if (!this.font) {

            cc.assetManager.resources.load("Fonts/font", cc.Font, (err, res) => {

                if (this.node) {

                    this.font = res;

                    this._forceUpdateRenderData(true);

                }

            })

        }

        this.onLoadClone();

    }

}
11赞

mark 学到了 之前都是扩展button组件的

又学废了 :love_you_gesture:

自定义一个button prefab就好了

自定义一个button prefab确实可以,但是这样你每个按钮都需要拖这个预制,对比一下,哪个更简单

又学到了新姿势

一样的 只是你原来拖的是系统的button 现在改为拖自己的button而已

你这种方式也可以,规定好项目用固定的button预制就好

可能我更习惯用系统自带的组件吧

我以前是自定义按钮监听类 ComBtn.on(this.btn, this.callback, this.target, soundType);
不同的按钮声音不同,例如退出按钮,确定按钮等等。

新思路,直接对原型链动手

学习了!!!

又学习了一个新姿势 :love_you_gesture:


我觉得这样更开放一些, 楼主做的是把全局全部改了,但就是有个别不需要,或者不同的音效呢

mark mark mark

好东西 mark一下

这个是什么用法,能介绍一下吗

装饰器。好像这种方式在原生,小游戏上用不了,只有在web上才播放到,不知道你的会不会有这个问题

这是ts的写法,所以原生和小游戏都可以,怎么就不行了

装饰器的用法,常用的就这种套路, 也可以用来加日志