在GameMaker中查看大小:Studio取决于第一个房间

时间:2016-06-21 10:36:51

标签: view display game-maker gml

我在GameMaker:Studio中制作游戏。我试图自动将游戏的视图大小设置为计算机当前的屏幕分辨率。

我有一个名为room_init的初始化房间。它在游戏开始时包含以下代码:

///Initialisation Room

//Get size of screen and set size and view of room_main
global.display_w = display_get_width();
global.display_h = display_get_height();
room_set_width(room_main,global.display_w);
room_set_height(room_main,global.display_h);
room_set_view(room_main,0,true,0,0,global.display_w,global.display_h,0,0,global.display_w,global.display_h,0,0,0,0,noone);
window_set_size(global.display_w,global.display_h);

//Go to next room
room_goto_next();

下一个房间是room_main,玩游戏。 room_main的默认大小为1024x768,但其房间大小已由上述代码更改。

当我将room_init的房间大小设置为1366x768(我的屏幕分辨率)时,在room_main中播放的游戏看起来像这样:

enter image description here 左上角的数字显示了room_main的大小(1366x768)。

当我将room_init的房间大小设置为200x100时,在room_main中玩的游戏看起来像这样:

enter image description here 左上角的数字仍为1366x768。

我也检查了display_get_width()和display_get_height(),它们分别返回1366和768,无论room_init的房间大小。

我查看了GM:Studio用户手册并在线浏览了类似的问题。我找不到任何似乎有效的东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

有一种方法可以使分辨率实际上是动态的,因此可以在游戏中进行更改。

让你的房间叫做room_init。给它创建代码: room_goto_next()

现在,创建一个持久对象,然后将其添加到其step事件中:

view_wview [0] = window_get_width()

view_hview [0] = window_get_height()

view_wport [0] = view_wview [0]

view_hport [0] = view_hview [0]

view_hborder [0] = view_wview [0] / 2;

view_vborder [0] = view_hview [0] / 2;

这将使视图大小和端口大小等于窗口大小,并且视图边框等于视图大小除以2。这样,无论分辨率如何,您的对象都会保持在中心位置。

最后,将持久对象放入room_init,每当你更改分辨率时它都会改变。

另外,您可能知道这一点,但值得一提的是方括号中的数字代表视图,可以替换。