本文分析游戏的全屏化处理。
引入:玩家在不同情景下可能会选择全屏游戏或窗口化游戏,所以作为开发者,应该在设置中加入全屏与否的选项。
两种插件:screenfull.js与Fullscreen.js
1.screenfull
// MV 1.5.0 for Win7 - 32位 var _CmdName = '窗口模式';// 指令名称 var _CmdSymbol = 'fullScreen';// 指令标识 ConfigManager[_CmdSymbol] = false;//初始化指令状态 /*--- 启动自检 ---*/ var _SBS = Scene_Boot.prototype.start; Scene_Boot.prototype.start = function() { var value = ConfigManager[_CmdSymbol]; Graphics._changeScreen(value); _SBS.call(this); }; /*--- 选项处理 ---*/ Window_Options.prototype.makeCommandList = function() { this.addGeneralOptions(); this.addCommand(_CmdName, _CmdSymbol);//<<< this.addVolumeOptions(); }; /*--- 触发处理 ---*/ var _WOPOK = Window_Options.prototype.processOk; Window_Options.prototype.processOk = function() { _WOPOK.call(this); var index = this.index(); var symbol = this.commandSymbol(index); var value = this.getConfigValue(symbol); if(symbol == _CmdSymbol){ Graphics._changeScreen(value); } }; /*--- 切屏处理---*/ Graphics._changeScreen = function(state) { if (state) { this._requestFullScreen(); } else { this._cancelFullScreen(); } }; /*--- 记录处理 ---*/ var _CMMD = ConfigManager.makeData; ConfigManager.makeData = function() { var config = _CMMD.call(this); config[_CmdSymbol] = ConfigManager[_CmdSymbol]; return config; }; var _CMAD = ConfigManager.applyData; ConfigManager.applyData = function(config) { _CMAD.call(this, config); ConfigManager[_CmdSymbol] = this.readFlag(config, _CmdSymbol); };
优:简单快捷,
缺点:进入游戏会发现游戏世界的宽高还是窗口化时的,两边会出现黑边。
2.Fullscreen
//============================================================================= // Fullscreen.js //============================================================================= /*: * @plugindesc Starts the game in fullscreen * @author Christian Schicho * * @help */ ;(function() { function extend(obj, name, func) { var orig = obj.prototype[name] obj.prototype[name] = function() { orig.call(this) func.call(this) } } extend(Scene_Boot, 'start', function() { Graphics._switchFullScreen(); }) var _Scene_Base_create = Scene_Base.prototype.create; Scene_Base.prototype.create = function() { _Scene_Base_create.call(this); Graphics.width = 1280; Graphics.height = 720; Graphics.boxHeight = 720; Graphics.boxWidth = 1280; }; })()
优:无论全屏还是窗口化,界面显示都是正常。
缺点:用户不可控
将两者结合起来,就是比较完美的解决方案了。
关于结合版,将在下文揭晓。