Gamemaker Studio 2,绘制 GUI 层冲突

Gamemaker Studio2, Draw GUI layer conflict

首先我想说我对 gameMakerstudio 还是很陌生,我不知道 software 是如何工作的,这可能是我的根本原因问题,因为我不知道为什么我有这个当前的分层问题。

我一直遇到一个问题,我在同一个房间内的不同对象中有两个 DrawGUI 事件。

第一个对象是 War 的迷雾,它绘制一个 GUI 并在玩家移动时显示地图,并使已探索的地方可见但不在视野中。

第二个对象是操纵杆,玩家可以用拇指拖动操纵杆来移动玩家。

自从我实现了War的Fog。我一直无法查看操纵杆。 war 的迷雾似乎覆盖了它,我无法使用它。

我知道我可以在其他抽奖活动中执行此操作。

绘制 绘制GUI 绘制开始 绘制结束 绘制 GUI 开始 绘制 GUI 结束

更改代码绘制位置后。 例子:一开始joystick和fog都在Draw GUI里,把一个从Draw GUI移到Draw GUI Begin后,同样的问题出现。

我已经确保将摇杆放在房间的最顶层,war的雾气放在最底层。

我已经尝试应用深度对象

oJoystick_Stick.depth = -100;

这并没有达到任何目的。

是否有另一种方法可以强制 GUI 层上的两个对象在另一个之上?

据我了解,DrawGUI 总是优先考虑在那里绘制的对象,高于 Draw 中的任何内容,包括 Begin Draw 和 End Draw。
这是因为 DrawGUI 是用于界面的(就像您看到的关于角色的统计数据,如健康、弹药等),并且在那里绘制的对象不是房间本身的一部分。您可能还注意到,在 DrawGUI 中绘制的对象也遵循 camera/Viewpoint.

所以,要清除绘制优先级:

  • 首先是 DrawGUI 层,它把对象放在所有东西的前面,就像一个界面。

  • 之后depth变量和房间内的层数优先,每层也给出了深度值,间隔为100。

  • 如果depth也相同(例如当它们在同一层时),则对象和代码加载的顺序决定绘制顺序。

当多个对象在同一深度重叠时,后者并不总是可靠的,因为如果对象在游戏中再次重绘(例如,将持久对象加载到新房间,或使用 [= 暂停和取消暂停) 12=]),则绘制对象的顺序可能不同。请记住,重叠对象时,将它们放置在不同的层中以防止混合优先级。

但是我自己没有用过War系统的Fog,所以我不知道它是不是内置的,但我不建议将它们放在DrawGUI中,因为那样应为界面布局预留。使用默认的绘制选项,您可以更灵活地设置房间内的图层。

关于DrawGUI的一些建议

  • DrawGUI Begin --> 在那个时刻的每个 drawGUI 之前调用事件
  • DrawGUI --------> 调用与屏幕刷新率同步的事件
  • DrawGUI End ----> 在那个时刻的每个 drawGUI 之后调用事件

所以 DrawGUI 的 GM-Studio“管道”就像步骤事件,我们有一个 BEGIN、一个 CURRENT、一个 END。

为了确定对象渲染的优先级,GM-Studio 使用深度内置变量。取 0 作为参考值。深度值 > 0 的对象最后渲染。深度值 < 0 的对象正在渲染所有内容。 在调用 instance_create_depth() 函数期间检查深度,检查深度变量在哪里发生变化,在房间编辑器中检查每个实例层的深度值。和 z 顺序。