RPG Maker MV(RMMV)開發(fā)的游戲中辆雾,一旦出現(xiàn)文件(如插件肪笋、音頻、圖片文件)缺失度迂,游戲就會報錯并中止游戲進程藤乙,正常情況下,這似乎沒什么問題惭墓,畢竟我們發(fā)布游戲前應該確保沒有缺少任何資源文件坛梁。不過,我之前嘗試將游戲部署到iOS平臺腊凶,部署時勾選了“排除未使用文件”以減小安裝包划咐,項目編譯后在模擬器運行測試時,游戲卻提示缺少某個文件钧萍,先不去論是不是這個“排除未使用文件”選項有問題尖殃,要命的是,每次它只提示一個文件缺失划煮,而我就得重新部署、修改代碼缔俄、編譯弛秋、測試,然后它又提示一個文件缺失俐载,我又得重復一次部署過程蟹略,非常郁悶。
為了解決這個問題遏佣,這個插件就因此而生了挖炬。
本插件的功能是自動忽略某些文件缺失的錯誤,包括:插件文件状婶、音頻文件意敛、圖片文件的缺失馅巷,以彈窗提示一次缺失的文件路徑,并忽略錯誤草姻,繼續(xù)游戲钓猬,不中止游戲進程。本插件安裝后無需配置撩独。
在下面的代碼中敞曹,重寫PluginManager.checkErrors
可以解決插件文件缺失的問題;重寫ImageManager.isReady
可以解決基本上大部份圖片缺失造成的問題综膀,但對sv戰(zhàn)斗圖的缺失問題只部份有用澳迫,仍然會造成sv戰(zhàn)斗時如果缺少出場角色戰(zhàn)斗圖時卡死在界面上,所以用重寫ImageManager.loadSvActor
來解決剧劝。重寫AudioManager.checkWebAudioError
解決音頻文件缺失的問題(RMMV中播放音頻的還有一個Html5Audio播放器橄登,不過AudioManager.shouldUseHtml5Audio
方法返回的永遠是false,所以實際上只用了WebAudio播放器担平,所以重寫這個就可以了)示绊。
插件的完整代碼:
/*:
* ===============================
* MND_SkipLoadError.js
* ===============================
* @plugindesc 以彈窗顯示與插件、圖片暂论、聲音文件缺失有關的錯誤停息面褐,并嘗試忽略錯誤繼續(xù)游戲。(v1.0.2)
* @author 萵瓜 @66rpg
*
* @help
* 本插件不需要配置取胎,但請注意:
* 本插件可能在官方升級RMMV后存在兼容性問題(如果官方修改了相應的方法的話)展哭,本
* 插件發(fā)布時只在 RMMV 1.4.1 (steam版)下作簡單測試。
*
* by 鰻駝螺(Mandarava) 2016.06.06
*/
PluginManager.checkErrors = function() {
var url = this._errorUrls.shift();
if (url) {
alert('Failed to load: ' + url);
}
};
ImageManager.loadSvActor = function(filename, hue) {
var fs=require("fs");
var path=require("path");
var folder = path.join(path.dirname(process.mainModule.filename), 'img/sv_actors/');
var file = folder + filename + '.png';
if(fs.existsSync(file)){
return this.loadBitmap('img/sv_actors/', filename, hue, false);
}else{
alert("Failed to load: "+file);
return this.loadEmptyBitmap();
}
};
ImageManager.isReady = function() {
for (var key in this.cache._inner) {
var bitmap = this.cache._inner[key].item;
if (bitmap.isError()) {
alert('Failed to load: ' + bitmap.url);
bitmap=ImageManager.loadEmptyBitmap();
this.cache.setItem(key, bitmap);
}
if (!bitmap.isReady()) {
return false;
}
}
return true;
};
AudioManager.checkWebAudioError = function(webAudio) {
if (webAudio && webAudio.isError()) {
alert('Failed to load: ' + webAudio.url);
webAudio.initialize("");
}
};
PS. 萵瓜是本人在66rpg論壇的ID闻蛀,本插件首發(fā)在6r論壇匪傍。