我在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中播放的游戏看起来像这样:
左上角的数字显示了room_main的大小(1366x768)。
当我将room_init的房间大小设置为200x100时,在room_main中玩的游戏看起来像这样:
我也检查了display_get_width()和display_get_height(),它们分别返回1366和768,无论room_init的房间大小。
我查看了GM:Studio用户手册并在线浏览了类似的问题。我找不到任何似乎有效的东西。任何帮助将不胜感激。
答案 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,每当你更改分辨率时它都会改变。
另外,您可能知道这一点,但值得一提的是方括号中的数字代表视图,可以替换。