一些RM作者常见的问题:“如何在画面中显示某某某变量或者文字”。
当然啦,这种需求很大的问题,已经有很多相关的插件了。但这种拿来主义终究不是自己的知识产出,不知其所以然,游戏终究还是一个大众化的缝合怪。
创建窗口的方式有很多,条条大路通罗马。在此分享一个自己创建窗口的步骤方法。以RMMZ为例:
[JavaScript] 纯文本查看 复制代码 //==========================================
//0.插件的信息部分
//==========================================
/*:
* @target MZ
* @plugindesc 创建窗口实作
* @author 古树旋律
*
* @help
* 1.复制初始化部分
* 2.书写要更新的部分,里面添加展示的内容
* 3.添加更新并启用
* 4.设置窗口的位置和尺寸
* 5.创建调用函数
* 6.复写需要调用窗口的场景
*/
//==========================================
//1.初始化部分
//==========================================
function Window_DIYWindow() {
this.initialize(...arguments);
}
Window_DIYWindow.prototype = Object.create(Window_Base.prototype);
Window_DIYWindow.prototype.constructor = Window_DIYWindow;
Window_DIYWindow.prototype.initialize = function (rect) {
Window_Base.prototype.initialize.call(this, rect);
this.opacity = 0;
this.refresh();//刷新调用
};
//==========================================
//2.更新部分,里面添加展示的内容
//==========================================
Window_DIYWindow.prototype.refresh = function () {
this.contents.clear();//清除旧内容
const date = new Date();
this.contents.fontSize = 28;//字体大小
this.drawText(date, 0, 0, 750, 'left');//展示
//括号内为(内容,X坐标,Y坐标,内容宽度,对齐方式)
};
//==========================================
//3.添加更新并启用
//==========================================
Window_DIYWindow.prototype.update = function () {
Window_Base.prototype.update.call(this);
this.refresh();
};
//==========================================
//4.设置窗口的位置和尺寸
//==========================================
Scene_Base.prototype.DIYWindowRect = function () {
const wx = 0;
const wy = 0;
const ww = 750;
const wh = 200;
return new Rectangle(wx, wy, ww, wh);
//括号内为(X坐标、Y坐标、窗体宽度、窗体高度)
};
//==========================================
//5.创建调用函数
//==========================================
Scene_Base.prototype.createDIYWindow = function () {
const rect = this.DIYWindowRect();
this._DIYWindow = new Window_DIYWindow(rect);
this.addChild(this._DIYWindow);
};
//==========================================
//6.复写需要调用的场景
//==========================================
var _Scene_Map_createAllWindows = Scene_Map.prototype.createAllWindows;
Scene_Map.prototype.createAllWindows = function () {
_Scene_Map_createAllWindows.call(this);
this.createDIYWindow();
};
最终效果如图所示,在Map中创建了一个窗口,窗口显示了Date内容。这个Date()是js的内置函数,大家可以自行修改成别的文字或者变量。
需要注意的是,创建窗口涉及到了各个函数之间的调用,如果函数名称错误,则会报错。
|