查看: 1883|回复: 5

[有事请教] 请问有大佬能够指教一下SceneDesktop插件的使用方法吗?

[复制链接]
梦石
0
星屑
23
在线时间
2 小时
注册时间
2023-6-16
回帖
0
发表于 2023-6-24 15:50:15 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
在git上发现了Roseshadows(离影玫)大大发布的模拟手机电脑界面的插件(https://github.com/Roseshadows/RPG-Maker-MV),大概有以下几个相关的,查看了脚本界面却看不太明白,有问题想要请教各位大佬
1.png

比如说是这个范例,可以直接使用吗?要更改什么才能在游戏里显示出来?
[pre lang="javascript"]// 游戏中要用的手机界面。
// 需要SceneDesktop.js作为前置插件。

/*:
* @plugindesc SceneDesktop.js的一个实例。需要 SceneDesktop.js 提供父类。
* @author 离影玫 | Rose_shadows
* @help 直接在代码中修改吧。
*/

/**
* Francis' phone
*/

function Window_FrancisPhone() {
    this.initialize.apply(this, arguments);
}

Window_FrancisPhone.prototype = Object.create(Window_Desktop.prototype);
Window_FrancisPhone.prototype.constructor = Window_FrancisPhone;

Window_FrancisPhone.prototype.initialize = function(x, y) {
    this._iconList = [160,161,162,163,164,165];
    this._standardBackOpacity = 0;
    this._frameOpacity = 0;
    Window_Desktop.prototype.initialize.call(this, x, y);
}

Window_FrancisPhone.prototype.windowWidth = function() {
    return 287;
}

Window_FrancisPhone.prototype.windowHeight = function() {
    return 512;
}

Window_FrancisPhone.prototype.numVisibleRows = function() {
    return 7;
}

Window_FrancisPhone.prototype.maxCols = function() {
    return 4;
}

Window_FrancisPhone.prototype.lineHeight = function() {
    return this.iconDrawingHeight() + this.standardFontSize() + this.iconTextDistance() + 18;
}

Window_FrancisPhone.prototype.standardFontSize = function() {
    return 16;
}

Window_FrancisPhone.prototype.iconTextDistance = function() {
    return 2;
}

Window_FrancisPhone.prototype.makeCommandList = function() {
    this.addCommand('搜索', 'search1', true);
    this.addCommand('备忘录', 'notebook1', true);
    this.addCommand('视频', 'video1', true);
    this.addCommand('照片', 'photo1', true);
    this.addCommand('电话簿', 'phonelist1', true);
    this.addCommand('关机', 'shutdown1', true);
}

function Scene_FrancisPhone() {
    this.initialize.apply(this, arguments);
}

Scene_FrancisPhone.prototype = Object.create(Scene_Desktop.prototype);
Scene_FrancisPhone.prototype.constructor = Scene_FrancisPhone;

Scene_FrancisPhone.prototype.initialize = function() {
    Scene_Desktop.prototype.initialize.call(this);
}

Scene_FrancisPhone.prototype.create = function() {
    Scene_Desktop.prototype.create.call(this);
    this.createPhoneWindow();
}

Scene_FrancisPhone.prototype.createPhoneWindow = function() {
    this._phoneWindow = new Window_FrancisPhone(268, 63);
    this._phoneWindow.setHandler('search1',     this.onFirst.bind(this));
    this._phoneWindow.setHandler('notebook1',   this.onSecond.bind(this));
    this._phoneWindow.setHandler('video1',      this.onThird.bind(this));
    this._phoneWindow.setHandler('photo1',      this.onForth.bind(this));
    this._phoneWindow.setHandler('phonelist1',  this.onFifth.bind(this));
    this._phoneWindow.setHandler('shutdown1',   this.exitPhone.bind(this));
    this._phoneWindow.setHandler('cancel',      this.popScene.bind(this));
    this.addWindow(this._phoneWindow);
}

// 指令相关的方法。
Scene_FrancisPhone.prototype.onFirst = function() {
    SceneManager.push(Scene_Item);
}

Scene_FrancisPhone.prototype.onSecond = function() {
    SceneManager.push(Scene_Options);
}

Scene_FrancisPhone.prototype.onThird = function() {
    SceneManager.push(Scene_Save);
}

Scene_FrancisPhone.prototype.onForth = function() {
    SceneManager.push(Scene_Debug);
}

Scene_FrancisPhone.prototype.onFifth = function() {
    SceneManager.push(Scene_Load);
}

Scene_FrancisPhone.prototype.exitPhone = function() {
    SceneManager.pop();
}

Scene_FrancisPhone.prototype.createBackground = function() {
    Scene_Desktop.prototype.createBackground.call(this);
    var x = SceneManager._screenWidth/2;
    var y = SceneManager._screenHeight/2;
    this.addExtendedSprite('img/pictures/','Phone-1',x+50,y+30,255,$gameSwitches.value(15));
}[/pre]
梦石
0
星屑
1896
在线时间
603 小时
注册时间
2022-7-5
回帖
104
发表于 2023-6-24 18:30:41 | 显示全部楼层
你别管那个范例,反正我是看不懂,还不如看插件说明。

SceneDesktop.js是基础插件,RSSD_ScenePhone是实现的插件,放在基础的下面,这是插件顺序。


调用界面的插件命令  [pre lang="javascript"]::ScenePhone RSSD_ScenePhone open[/pre]
调用界面的脚本命令  [pre lang="javascript"]SceneManager.push(Scene_RSSDPhone);[/pre]

效果一样的,二选一。

在调用之前,你得先在RSSD_ScenePhone插件设置的最下面,有个APP列表,把要显示的APP设置好。因为它的界面需要根据设置内容来填充,如果你内容是空的,这个手机界面就出不来,只会显示一个小方块。

上面是最简单的实现方法,默认界面非常丑陋,你要设置手机背景,改变尺寸大小,设置APP的图标,以及点击APP后有什么反应,才能看起来更像手机或者电脑,这些自己进一步研究吧。

你安装了插件后,在插件说明其实都有提到的,认真研究就知道了,我说的这些其实也是插件说明写到的。

回复

使用道具 举报

梦石
0
星屑
7800
在线时间
868 小时
注册时间
2021-8-28
回帖
93
发表于 2023-6-25 21:23:13 | 显示全部楼层
嗯……就像楼上说的那样,基本只要看 RSSD_ScenePhone.js 里的帮助文档就可以了,SceneDesktop.js 只是提供了创建所需的类而已。

如果你需要手机背景,可以看看 这里 ,提供了已经抠好图的2个手机背景和1个手机框架,选择一张直接放到 img/phones/ 文件夹下,插件参数 x, y, 宽, 高保持插件默认值,然后设置参数 背景图片 即可。

(呃,话说回来,那个范例其实是我在 SceneDesktop.js 的基础上给自己的游戏制作的一个插件,放在上面存档而已,和 RSSD_ScenePhone.js 的使用没有半毛钱关系,所以参考价值确实不高……)
回复

使用道具 举报

梦石
0
星屑
75
在线时间
15 小时
注册时间
2024-5-30
回帖
8
发表于 2024-6-4 19:50:12 | 显示全部楼层
bleen 发表于 2023-6-24 18:30
你别管那个范例,反正我是看不懂,还不如看插件说明。

SceneDesktop.js是基础插件,RSSD_ScenePhone是实现 ...

请问这个插件要怎么设置APP的位置和图标啊 看不懂T-T
回复

使用道具 举报

梦石
0
星屑
75
在线时间
15 小时
注册时间
2024-5-30
回帖
8
发表于 2024-6-4 19:54:05 | 显示全部楼层
Rose_shadows 发表于 2023-6-25 21:23
嗯……就像楼上说的那样,基本只要看 RSSD_ScenePhone.js 里的帮助文档就可以了,SceneDesktop.js 只是提供 ...

请问这个插件要怎么设置APP的位置和图标啊 看不懂 特别需要这个插件呜呜呜 求教
回复

使用道具 举报

梦石
0
星屑
75
在线时间
15 小时
注册时间
2024-5-30
回帖
8
发表于 2024-6-4 22:37:44 | 显示全部楼层
眼泪是礼物 发表于 2024-6-4 19:50
请问这个插件要怎么设置APP的位置和图标啊 看不懂T-T

已经解决了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部