请教GMS适配手机分辨率的解决方案
gmstudio吧
全部回复
仅看楼主
level 3
看过一个解决方案是说在房间边缘设置显不显示都无关紧要的背景或者贴图,机器分辨率如果小于房间的就从房间内X,Y(X>0,Y>0)点开始显示,也就是说只显示整个游戏界面的中间一部分。
这种方案主要是对room_set_view这个函数进行操作,但是感觉这种解决方案不是很好。
像保卫萝卜,房间大小是960*640,如果用1024*768分辨率的机器玩,它的长宽会自动按相同比例放大到一定程度,然后上下留出黑色的边框,我感觉它这个黑色的边框并不是通过上面那个方案来解决的,而是直接通过对手机屏幕边缘与游戏界面的间距进行操作,但是我找了很久都没有找到GMS里面类似的函数,不知道GMS能不能实现?还有对整个房间的显示进行缩放,也没有看到这样的函数,不知道是否存在?
还有想问一下 GMS最开始运行的代码是什么?应该写在哪里?就像有些语言是一个main()函数来开始整个程序的运行。
我看到好像是先编译对象然后编译房间代码,不太符合常理啊,按理说最先运行的应该是房间代码。还有每个对象的编译顺序是按照什么来排的呢?我想把全局变量的声明放在对象编译之前,可以实现吗?
谢谢!
2013年05月26日 01点05分 1
level 12
【房间大小是960*640,如果用1024*768分辨率的机器玩,它的长宽会自动按相同比例放大到一定程度,然后上下留出黑色的边框?】
你确定GMS工程会是这种显示方式?!
我生成的APK文件在安卓手机上测试并不是这个样子。
结果是手机屏幕会显示所有view图像,并不是按照原view的x:y比例进行拉伸的。
说道main函数,GMS工程里并没有体现。
GMS的每个room都有初始化code代码,你可以编写这个房间的一些初始化参数。
但我发现当我在room初始化代码定义全局A参数,并在room里的A对象create代码赋予全局A参数赋值时,却出现过错误信息。这个倒是可以避免,但可能从某种程度来讲,可能不是先执行room代码(也可能我测试出现错误)。
简单说说游戏中全局变量的声明。我思路很简单,一个游戏不可能开启后就进行stage游戏界面,而是游戏开始的UI界面(room)。这个UI界面无非就是一些按钮,行为是切换room或显示参数等,你完全可以在这个UI房间初始化后期游戏中的一些全局变量。然后当你选择存档时,你可以把存档的内容赋予给这些全局变量。
2013年05月26日 03点05分 2
level 12
另外,关于设备显示这一块,你参考下入下函数:
display_get_dpi_x()、display_get_dpi_y()
display_get_width()、display_get_height()
display_get_gui_height()、display_get_gui_width()
其他关于view等函数结合起来研究下吧
2013年05月26日 03点05分 3
level 3
【房间大小是960*640,如果用1024*768分辨率的机器玩,它的长宽会自动按相同比例放大到一定程度,然后上下留出黑色的边框?】
这是保卫萝卜的显示方式,肯定不是用的GMS实现的,我是想通过GMS实现这种方式,但是实现不了,我试试你给的函数看行不行。
room代码基本在最后执行的,应该不是你测试错误,感觉这是GMS设计不太合理的一个地方,可能有其它用意吧。。。
2013年05月26日 06点05分 4
原来你是想实现这样的效果啊。 这个不难,我给你的函数足以!!!
2013年05月26日 07点05分
level 3
这些函数里全部都是get啊,除了一个display_set_gui_size(),但是我试了似乎没用,而GMS内置的VIEW又无法实现房间的缩放,要实现保卫萝卜的效果,必须具备两个条件,一是设置设备开始显示VIEW的X,Y坐标(默认是0,0,也就是满屏幕填充VIEW)二是对房间的VIEW进行缩放,目前一个都没有办法实现。。。
2013年05月26日 12点05分 5
level 3
也就是说安卓系统的手机默认会把GMS做出的游戏全屏化,但是我不知道那些GMS函数可以更改这些默认参数,因为我在电脑上运行并不是全屏的。
2013年05月27日 01点05分 6
level 13
帮你解决其中一个问题,就是关于视图view的缩放。
改变视图的大小即可。
下面的代码实现同步缩放。
在一个对象的鼠标滚轮向上滚动事件中加入以下代码:
view_wview[0]+=10;
view_hview[0]+=10;
同理在mouse wheel down事件中加入以下代码:
view_wview[0]-=10;
view_hview[0]-=10;
就可以实现视图的缩放。
基于这个原理你根据不同的分辨率,改变不同的view_wview[0](视图宽)与view_wview[0]视图高即可。
2013年05月27日 08点05分 7
level 3
原来全部都在VIEW函数里面,我以为只有view函数就是room里面的那几个,没看到是在别的分类中。。
终于解决了,感谢二位的帮助!
2013年05月27日 08点05分 8
level 1
display_get_dpi_x()函数在ios下不得行
2013年05月31日 08点05分 9
level 6
终究还是搞不对 LZ能分享一下方法吗?
2013年10月29日 15点10分 10
1