我的游戏中有一些部分,可以从众多不同的角色中选择一个加入你的队伍(每次只能一个),而且随着游戏的开发,还会有更多角色加入。由于同一时间只能有一名角色在队伍中,如果要手动处理每一个移除队伍成员的情况,将会非常麻烦。
基本上,我想问的是,有没有办法在不手动指定每个成员的情况下,将队伍成员设为“无”?我的意思是将他们从队伍中移除,而不是让他们隐身。
我的游戏中有一些部分,可以从众多不同的角色中选择一个加入你的队伍(每次只能一个),而且随着游戏的开发,还会有更多角色加入。由于同一时间只能有一名角色在队伍中,如果要手动处理每一个移除队伍成员的情况,将会非常麻烦。
基本上,我想问的是,有没有办法在不手动指定每个成员的情况下,将队伍成员设为“无”?我的意思是将他们从队伍中移除,而不是让他们隐身。
试试在“脚本”事件命令中使用这段代码,我认为它应该能清空所有队伍成员:
$gameParty.allMembers().forEach(actor => $gameParty.removeActor(actor.actorId()));
如果你希望主角留在队伍中,可以跳过其演员 ID。这段代码保留 1 号演员,并移除其他所有人:
$gameParty.allMembers().forEach(actor => {
if (actor.actorId() !== 1) $gameParty.removeActor(actor.actorId());
});
是的,这招很管用!那么,有没有办法在不逐一考虑所有选项的情况下,更改玩家队伍中所有队员的不透明度或混合模式,而不受具体角色的影响?
跟随者每一帧都会复制玩家的透明度和混合模式。如果希望整个队伍一起变化,可以使用“设置移动路线”事件指令来改变玩家的透明度/混合模式,这样所有当前队伍成员都会同时发生变化。
如果只想改变队伍成员(包括跟随者),而让玩家保持正常状态,则需要一个小插件来阻止这种复制行为。请将以下内容保存为 .js 文件并放入 js/plugins 文件夹中,然后在插件管理器中启用它:
/*:
* @target MZ
* @plugindesc 当开关开启时,跟随者使用自身的透明度和混合模式。
*/
(() => {
const FOLLOWER_SWITCH = 0; // 你的开关 ID
const OPACITY_VAR = 0; // 你的变量 ID,范围 0 到 255
const BLEND_VAR = 0; // 你的变量 ID,0 为正常,1 为加算,2 为乘算,3 为滤色
const _update = Game_Follower.prototype.update;
Game_Follower.prototype.update = function() {
_update.call(this);
if ($gameSwitches.value(FOLLOWER_SWITCH)) {
this.setOpacity($gameVariables.value(OPACITY_VAR));
this.setBlendMode($gameVariables.value(BLEND_VAR));
}
};
})();
请将三个 0 替换为你实际使用的开关和变量编号。当开关开启时,地图上所有队伍成员都会使用这两个变量的值。当开关关闭时,他们会再次同步玩家的透明度和混合模式。
这正是我想要的,谢谢!