Gamemaker Studio 2,绘制 GUI 层冲突

Posted

技术标签:

【中文标题】Gamemaker Studio 2,绘制 GUI 层冲突【英文标题】:Gamemaker Studio2, Draw GUI layer conflict 【发布时间】:2021-02-22 16:28:46 【问题描述】:

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

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

第一个对象是战争迷雾,它绘制一个 GUI,并在玩家移动时显示地图,并保持探索的地方可见但不可见。

第二个对象是游戏杆,玩家将使用他们的拇指拖动操纵杆来移动玩家。

自从我实施了战争迷雾。我一直无法查看操纵杆。看来战争迷雾笼罩着它,我无法使用它。

我知道还有其他抽奖活动我可以这样做。

画 绘制图形用户界面 开始抽奖 画完 绘制 GUI BEGIN 绘制 GUI END

更改我绘制代码的位置后。 示例:一开始摇杆和雾都在 Draw GUI 中,将一个从 Draw GUI 移动到 Draw GUI Begin 后,出现同样的问题。

我已经确保将操纵杆放在房间的最顶层,将战争迷雾放在最底层。

我已尝试对对象应用深度

oJoystick_Stick.depth = -100;

这没有任何作用。

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

【问题讨论】:

【参考方案1】:

据我了解,DrawGUI 总是优先考虑在 Draw 中绘制的对象,包括 Begin Draw 和 End Draw。 这是因为 DrawGUI 是用于一个界面(比如你看到的关于你的角色的统计数据,比如健康、弹药等),并且在那里绘制的对象并不是房间本身的一部分。您可能还注意到,在 DrawGUI 中绘制的对象也跟随相机/视点。

所以,要清除抽奖优先级:

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

之后,房间内的depth变量和层具有优先权,每一层也给了一个深度值,间隔为100。

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

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

但是我自己没有使用过战争迷雾系统,所以我不知道它是否是内置的,但我不建议将它们放在 DrawGUI 中,因为它应该保留给界面布局。使用默认的绘图选项,您可以更灵活地处理房间内的图层。

【讨论】:

【参考方案2】:

关于 DrawGUI 的一些建议

DrawGUI Begin --> 在那一刻的每个 drawGUI 之前调用事件 DrawGUI -------->该事件被称为与屏幕刷新率同步 DrawGUI End ----> 在那一刻的每个 drawGUI 之后调用事件

因此,DrawGUI 的 GM-Studio“管道”就像 step 事件,我们有一个 BEGIN、一个 CURRENT、一个 END。

为了优先考虑对象渲染,GM-Studio 使用深度内置变量。取0作为参考值。深度值 > 0 的对象最后渲染。深度值

【讨论】:

以上是关于Gamemaker Studio 2,绘制 GUI 层冲突的主要内容,如果未能解决你的问题,请参考以下文章

GameMaker Studio 2 - 多个事件 - 如果 mouse_enter 事件则绘制

Gamemaker Studio 2 位被随机删除

2d 阵列 gamemaker2 工作室

gamemaker studio2 Arena Shooter(竞技场射击)图文教程 5 教程搬运加自己经验

GameMaker Studio 2 - 未找到路径

Gamemaker Studio 2 中的弹丸不动