RPG Maker MV 游戏画面卡死的解决方法

找到 www ⇒ js ⇒ rpg_core.js 文件中的 Graphics.render 方法,将第一个 if 语句的 === 判断改为 <= 即可。 具体代码片段如下:

Graphics.render = function(stage) {
// 原代码为 if (this._skipCount === 0) {
    if (this._skipCount <= 0) {
        var startTime = Date.now();
        if (stage) {
            this._renderer.render(stage);
            if (this._renderer.gl && this._renderer.gl.flush) {
                this._renderer.gl.flush();
            }
        }
        var endTime = Date.now();
        var elapsed = endTime - startTime;
        this._skipCount = Math.min(Math.floor(elapsed / 15), this._maxSkip);
        this._rendered = true;
    } else {
        this._skipCount--;
        this._rendered = false;
    }
    this.frameCount++;
};

这段代码为游戏画面提供基于设备性能自适应的帧率渲染,当设备性能较差时可通过跳过更多的画面渲染来维持游戏运行。

实际上 _skipCount 可能会因为计算误差变成负值,就会导致游戏画面卡死,而声音、按键等其他功能却不受影响。