【RPG Maker MV 仿新仙剑 战斗场景UI (八)】

RPG Maker MV 仿新仙剑 战斗场景UI 八

状态及装备场景

本计划在战斗场景中直接制作的,但考虑到在战斗场景中加入太多的窗口这不太合适,操作也繁琐,因此直接使用其他场景。

代码

javascript 复制代码
Pal_Window_EquipStatus.prototype.drawNewParam = function(paramId) {
	this.drawText(this._tempActor.param(paramId), 500, 14+32*this._actorState.indexOf(paramId), 110, 'left');
};
al_Window_EquipStatus.prototype.drawCurrentParam = function(paramId) {
	this.drawText(this._actor.param(paramId), 400, 14+32*this._actorState.indexOf(paramId), 110, 'left');
};

这里由于之前测试通过,因此去掉绘制数值上的**+9999**。

javascript 复制代码
Pal_Scene_Battle.prototype.commandStates = function() {
	SceneManager.push(Scene_Status);
};
Pal_Scene_Battle.prototype.commandEquip = function() {
	SceneManager.push(Pal_Scene_Equip);
};

直接前往这两个场景,显示数据信息。

为了保证场景之间跳转后之前的操作保留(看上去),因此在对应场景中添加如下代码:

javascript 复制代码
Scene_Status.prototype.popScene = function() {
	switch(SceneManager._stack[1].name){
		case "Scene_Menu":
		break;
		case "Pal_Scene_Battle":
		SceneManager.scene_windows.command1_active=false;
		SceneManager.scene_windows.command2_active=true;
		SceneManager.scene_windows.command3_active=false;
		SceneManager.scene_windows.command1_index=3;
		SceneManager.scene_windows.command2_index=4;
		SceneManager.scene_windows.command3_index=-1;
		break;
		default:
		break;
	}
	 Scene_ItemBase.prototype.popScene.call(this);
};
Pal_Scene_Equip.prototype.popScene = function() {
	switch(SceneManager._stack[1].name){
		case "Scene_Menu":
		SceneManager.scene_windows.command1_active=false;
		SceneManager.scene_windows.command2_active=true;
		SceneManager.scene_windows.command3_active=false;
		SceneManager.scene_windows.command1_index=2;
		SceneManager.scene_windows.command2_index=1;
		SceneManager.scene_windows.command3_index=-1;
		break;
		case "Pal_Scene_Battle":
		SceneManager.scene_windows.command1_active=false;
		SceneManager.scene_windows.command2_active=false;
		SceneManager.scene_windows.command3_active=true;
		SceneManager.scene_windows.command1_index=3;
		SceneManager.scene_windows.command2_index=0;
		SceneManager.scene_windows.command3_index=2;
		break;
		default:
		break;
	}
	 Scene_ItemBase.prototype.popScene.call(this);
};

这是在场景管理器中设置跳转后的操作信息,涉及到返回的场景有战斗场景主菜单场景

javascript 复制代码
Pal_Scene_Battle.prototype.initWindons = function() {
    if(!SceneManager.scene_windows.command1_active){
		if(!SceneManager.scene_windows.command2_active){
			if(SceneManager.scene_windows.command3_active){
				this._actorCommandWindow._index=SceneManager.scene_windows.command1_index;
				this.commandOther();
				this._otherCommandWindow._index=SceneManager.scene_windows.command2_index;
				this.commandOperateItem();
				this._itemCommandWindow._index=SceneManager.scene_windows.command3_index;
				this._actorCommandWindow.deactivate();
				this._otherCommandWindow.deactivate();
				SceneManager.initScene_windows()
			}
		}else{//从状态场景返回战斗场景
			this._actorCommandWindow._index=SceneManager.scene_windows.command1_index;
			this.commandOther();
			this._otherCommandWindow._index=SceneManager.scene_windows.command2_index;
			this._actorCommandWindow.deactivate();
			SceneManager.initScene_windows();
		}
	}
};
/** 
 * 开始队伍命令选择
 */
Pal_Scene_Battle.prototype.startPartyCommandSelection = function() {
    this._statusWindow.deselect();
    this._statusWindow.open();
	this.refreshStatus();
    this._actorCommandWindow.close();
	this.selectNextCommand();
	this.initWindons();
};

然后再对应的场景使用即可,不过现在发现问题还挺多的,比如会有明显的UI跳动痕迹,显示不自然等,后续慢慢优化吧!

主菜单场景的就不发出来了,那个写出来比战斗的场景简单太多了!

效果

这效果其实还挺有喜剧 效果的。

将窗口打开的速度降低的最低后,可以看到最先出现的就是状态的显示。

正常来说应该先显示人物的战斗指令的,但看来没有先显示,同时额外战斗的指令窗口打开的也很有喜感,是在慢慢的不断拉开的效果,同时默认可以看到就在道具这个选项上,但这是从状态返回的啊;所有全部展开后,才跳到状态选项,所有会有UI跳动的情况。

这里可以看到额外物品 的指令窗口是同步打开的,这里看着非常明显,但战斗的指令窗口却得等到这两个窗口全部展开后才能显示,之后就是指令下标的跳转,及UI的变动。

不知道大家有什么好的优化手段,可以提出来,学习学习大家的先进经验!!!

相关推荐
真滴book理喻1 小时前
Vue(四)
前端·javascript·vue.js
程序员_三木2 小时前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
开心工作室_kaic3 小时前
springboot476基于vue篮球联盟管理系统(论文+源码)_kaic
前端·javascript·vue.js
川石教育3 小时前
Vue前端开发-缓存优化
前端·javascript·vue.js·缓存·前端框架·vue·数据缓存
搏博3 小时前
使用Vue创建前后端分离项目的过程(前端部分)
前端·javascript·vue.js
温轻舟3 小时前
前端开发 之 12个鼠标交互特效上【附完整源码】
开发语言·前端·javascript·css·html·交互·温轻舟
web135085886354 小时前
2024-05-18 前端模块化开发——ESModule模块化
开发语言·前端·javascript
LCG元5 小时前
javascript页面设计案例【使用HTML、CSS和JavaScript创建一个基本的互动网页】
javascript
技术程序猿华锋5 小时前
Gemini 2.0 Flash 体验版实测:日常视觉识别的最佳选择,关键在于其API Key现在是免费调用
开发语言·javascript·ecmascript·googlecloud·gemini
TttHhhYy5 小时前
uniapp+vue开发app,蓝牙连接,蓝牙接收文件保存到手机特定文件夹,从手机特定目录(可自定义),读取文件内容,这篇首先说如何读取,手机目录如何寻找
开发语言·前端·javascript·vue.js·uni-app