新人提问集中帖[2026]
gamemaker吧
全部回复
仅看楼主
吧务
level 13
q糖豆p 楼主
老样子,提问前请注意:
---基础---
0:确认你的问题在置顶帖、贴吧第一页、本集中帖的最后一页都无法找到答案;
1:确认你的问题不在引擎自带的新人教程范围;
2:请勿使用含贬义的词汇来形容你的问题,除非你确实想说“无法回答这个问题的都(贬义词)”;
3:通常来说,你的问题要包含这4个部分,即“你想做什么”(目的)、“你做了什么”(过程/已有内容或方式选择,注意这部分将决定问题的解决方向,什么都不说的话意味着完全答非所问的可能)、“现在的效果”(运行结果)、“决定性的差异”(要改进/改变的地方),除非你有充足的理由省略其中一项或多项;
4:如果附带代码截图,请把object名、事件名、代码行号一起截上,并保证截图里的“空白”尽可能少;
5:提问请注明当前使用的软件版本,如果是参照旧版(2.2或更早)教程,请查看建立script时自带注释的提示阅读文档,并按新的function结构(或者说把旧版教程的script格式转化为新版function格式)进行书写;
6:目前这个时间点,free档的可以导出大多数平台,如果不商用的话足够使用,没有找破解的必要,如果商用的话你会在乎软件本体的费用嘛?
---进阶---
7:不要拿别人的代码出来提问;//即A不可以问B“C写的这个是什么意思,怎么改”
8:请充分理解,绝大多数问题的解决方案都不唯一,不同人回答的可能是不同路线,且可能在方向上正好相反(如两件事冲突选择放弃/弱化哪一个)。一题多问会大幅度增加这种情况的发生概率;
9:请尽量避免提问类似“有没有人知道……”之类的问题,除非你想要的确实是“有”或“没有”这样的结果(做游戏/程序,严谨是必要的);
10:请尽量使用正式一些(括号齐全,按程序逻辑设置缩进)的代码格式,也许格式改好以后自己就能找到错误在哪;
11:加一个变量能解决的问题都不是问题,加两个变量/一个数据结构能解决的问题也都不是问题;
12:能自己做个demo测试一次就知道答案的问题都不是问题,无论怎样都设计不出demo来做出区分的选择对你来说选哪个都一样,不必纠结。
---传承---
13:如果问题的复杂度较高,且有计划逐步攻克问题并记录完整解决方案的话,建议单独开帖,本吧精华帖类别“经典问答”正是为此准备;
14:问题完美解决以后,希望能留下解决问题的记录(用了什么方法,或参照哪个回答的方案),这里有不少“哟,我这坏了不能用”这样不明所以的提问又在几天之后追加个“哟,现在能用了,此帖终结”这种不明所以的解决方法,对后续搜到帖子的读者没有任何帮助;
2025年12月26日 06点12分 1
level 1
一个很神秘的问题,鼠标的坐标无法正常返回。
具体情形是这样的,假如我在一个object的步事件里写了
x=mouse_x;
y=mouse_y;
一开始instance可以跟随鼠标移动,但是当room_restart(),或者跳转出这个room再重新进入这个room时,instance不再跟随鼠标移动了,而是当你点击鼠标左键之后,他才会出现在你鼠标的位置…
我尝试使用window_views_mouse_get_x(0)这种函数来替换mouse_x,但依旧出现如上情况。
请问这个该如何解决呢?
2026年01月02日 08点01分 2
全靠猜:这可能是windows不允许一个新程序随意获取鼠标状态的安全防护机制,以防止后台程序窃取用户输入。激活的当前窗口可以取消掉这个防护,所以你看现在大多数游戏在刚开启/经过了特定场景之后,都有需要点击才能继续的环节。
2026年01月04日 00点01分
咱以前的倾向都是先考虑“能否绕开跨房间/房间重开实现原有游戏体验”,不过刚刚看这些描述,也许有些地方让玩家点击后再继续,这种方案既能掩盖掉这样无从查起的bug,又能让玩家合理掌控游戏节奏。
2026年01月04日 01点01分
@q糖豆p 刚刚看到不好意思喵,这是个类pvz式塔防游戏,如果在关卡内让玩家点击再继续会很有割裂感,与此同时我认为可能不是焦点的问题,因为我就算焦点全程保持在游戏内也会出现如此的问题。
2026年03月12日 16点03分
@(ᗜᗜ) :没太关注过这个方面(咱之前有room_goto之后直接调用mouse_x也没发现问题),解决的话咱有两个方面的建议。一个是改变房间切换/重置的时机,甚至干脆不更改房间,只是在房间内切换主控object。另一个方向是试试cursor_sprite能不能满足需要。
2026年03月13日 08点03分
level 7
有没有哪个大佬可以发一份『能一定程度模拟滤波器CRT显示屏对像素游戏的美化效果』的shader代码?感谢[乖][乖]
2026年01月16日 15点01分 3
level 6
去年得到过你的很多帮助,今年也请多指教了!
2026年01月18日 16点01分 4
level 9
想要做到游戏运镜,目前想到的要求[0.包含一个不会动的UI面;1.能够做到在房间内物体xy不变的情况下(即只改变显示效果、不改变实际效果)做到对视角的缩放(长宽等比即可)移动视角中心;2.视角运动尽可能顺滑]
目前找到的两个方案:一个是GMS2自带的view,但是还没有仔细研究,不清楚能否完成0的要求以及是否邨彩一些不方便的地方(如无法实现的功能/使用后会改变的功能)。
一个是单独写出一个shader用于视角变换,但是目前对于shader掌握还不算熟练(对于shader内部参数写法不熟、抱歉不知道怎么去查)并且担心使用shader是否会造成其他shader的问题
2026年01月26日 06点01分 5
view是足够解决问题的,稍微注意一点就是GMS2的view已经把camera部分分离出来了,逻辑上比8.0时代要清晰一些(当然复杂程度可能也高了一点)。至于shader,复杂度会非常高,至少不是单一的“开启关闭”,而是要改写要显示的所有内容的绘制方法的程度,只看明面这些内容上看不用想这条路。
2026年01月27日 02点01分
另外介绍一个中间方案是surface,使用的话可以让一些静态的无需重复绘制的内容“固定”下来来节约一些重复运算,之后也可以整体缩放绘制。就算这次用不上,以后也有机会。
2026年01月27日 02点01分
level 6
有个常用的式子是 RANDOM (XX,XX) 请问相似的IRANDOM和 这个RANDOM有什么区别?
2026年03月05日 01点03分 6
其实在函数上按鼠标中键(滚轮)就可以直接跳转到自带文档的对应页。简单来说random是取0到给定参数之间的任意数,irandom是取两参数之间的任意整数。具体的边界请以文档说明为准。
2026年03月06日 02点03分
@q糖豆p 好的,谢谢
2026年03月09日 00点03分
level 6
请问设定变量时,变量的值要是数字,为什么不能是单词?比如一个ATTACK的变量,不能设定它的值是ON?
2026年03月20日 07点03分 7
变量的值,可以是数字,也可以是字符串。attack = "on"; 即可实现这个结果。有2个问题需要说明:一个是在拖拽模式里具体要怎么写咱不太清楚,另一个是用on和off的字符串其实不如直接用1和0。
2026年03月21日 13点03分
@q糖豆p 好的,感谢解答,我试过用字符但好像不生效。
2026年03月25日 07点03分
@魔導紳士 多数情况下,位于一对双引号内的内容才被视为字符串。8.0时代在给变量赋值时如果没写双引号,会被视为是变量名,会引用该变量的值。就算是用拖拽,到这里也不得不开始注意格式问题了。
2026年03月26日 07点03分
level 6
请教一个设计问题。2D横版动作游戏,我想做一个飘忽不定的飞行物体,目前的做法是固定一个点,让她远离这个点时就附上相反的加速度,请问除了在房间内多设几个这种锚点之外还有别的设计方法吗?
2026年04月08日 03点04分 8
如果你要这个“飞行体”去锚定“房间里几个锚点中的一个”(单object多instance),可能会需要使用id这种精确指定的方法。另外如果锚点是固定的,可以直接把坐标信息赋值到飞行物体上,这样连锚点都不用做。
2026年04月08日 05点04分
另外,“飘忽不定”这个描述太飘忽不定了,有很多看上去很飘的轨迹,其实可以抽离出比较规整的数学公式。有些需要锚定中心坐标,有些根据当前位置和速度就能继续飘下去。
2026年04月08日 05点04分
level 9
对于gms2来说,中文字体使用什么方式添加比较方便?
之前一直是直接在资源里载入字体,随后直接添加文件添加字库
但是对文件的读取貌似有上限,上限外的字读不到
因此想问问有无方便的添加范围的方法()
2026年04月13日 01点04分 9
据说font_add比预载入字体在不少方面有优势。可以试试看。
2026年04月14日 02点04分
@云下岸边 在目前最新的GMS2下, font_add 是基于 ttf 文件即时获取字符加载到纹理里的,未生成的字符绘制时会自动生成,所以只需要填写32-128的范围就行,更详细的可以看手册
2026年04月15日 15点04分
@q糖豆p 已试验,虽然不知道内存问题,但是目前把从32到40959(英文+汉字常用区+一堆其他的)都加载的情况下加载并开始游戏并没有出现卡顿或延迟。但不知道该怎么做不相隔的区域(比如32-128是yy推荐的范围,主要是英文,19968 ~ 40959是汉字的基本区,目前以汉字基本区+英文为主但是没找到能在一个字体中加上这俩并集的办法)
2026年04月14日 15点04分
@火柴哥812 原来如此!学到了
2026年04月16日 00点04分
level 6
具体情况有些复杂,先讲述一下大概情况看看楼主有无相关经验
写了一段代码发现有bug,打算用show_message返回相关变量来找到错误原因,结果加入了show_message后的代码bug消失了
请问这是gm自身的问题还是show_message所带来的时停效果导致的代码运行偏差(我没有使用任何时间相关函数)?还有该如何解决这类问题呢?
2026年04月18日 06点04分 11
那要看你show_message的内容,是单个变量还是套用了函数。如果是后者的话那确实可能出现描述的问题。前者的话……如果是某个特殊写法(实际也调用了函数)那咱确实没经验,如果没有的话,咱的已知框架内不会出现这个结果。
2026年04月20日 01点04分
比起show message(不知道为啥选择了这个而不是show debug message),另一种方法是在出错代码的上面几行加断点,然后在debug运行里直接看对应变量的值。
2026年04月20日 01点04分
level 9
想问问有没有研究过asset_get_index这个函数的(
使用了但并没有其效果,即使是直接在函数里填写对应的 spr名称字符串 也读不出来
2026年04月26日 02点04分 12
从咱常用的框架来说,不建议把这个函数留在最终版。用个数组(或者你喜欢的数据结构)预先记录index更合理一些。如果你非要用这个函数的话,请把代码片段、报错信息(或没有得到正确值的debug信息)贴出来。
2026年04月27日 03点04分
level 6
遇到两个问题:
1:网络功能中gm的同一程序能否既做服务器又做服务器当中的一个客户端?(我尝试过但失败了)若能,该如何达成这一目的?
2:在房间1中用room_set_width/height设置房间二的宽高然后跳转,发现房间二宽高与房间一一致,在房间一启用视口后房间二宽高与设置后的房间二一致。想问这是什么原理?还有除了增加视口外,还有什么方法可以使跳转后的房间二宽高与设置后的房间二一致吗?
2026年05月02日 14点05分 13
似乎写错了,启用视口后房间二宽高是与视口一致
2026年05月02日 15点05分
问题1似乎是想让程序经过网络和自己通信?不知道为什么要这么做。排除掉通信部分,让程序认为自己是客户端之一,并按客户端进行操作响应/画面显示,这些是没有问题的。
2026年05月06日 03点05分
问题2,room、view(camera、port)、window、application surface之间变来变去的麻烦事太多了,咱通常是能不变就不变。另外之前因为测试时多view损失性能(让爪机掉电变烫),咱已经改成用surface自行处理这些了,如果层主同样懒得研究那些的话也可以试试。
2026年05月06日 03点05分
level 6
不知道楼主是否了解网络连接相关内容
请问gms2能否在无公网服务器的情况下联机,如果不能,公网服务器是直接用gms2搭建较好还是用其它语言
2026年05月16日 17点05分 14
无公网服务的情况下,不光GMS2做不到,其他单一程序也做不到。能做到的也是用他们品牌自己的服务器中转了一下。不过既然有这种中转,GMS2其实也可以用。
2026年05月18日 01点05分
如果可能的话,服务端尽量不要用GMS2来写。可能是没有显卡的关系,咱租的那个很小的云服务器(2核2G、win),GMS2的程序哪怕是最小窗口只用来显示fps值的接近空工程,也跑不满60fps,什么无窗口之类的方案也尝试过,都没能改善。
2026年05月18日 01点05分
level 6
我今年上半年光顾着改图了,下半年准备回归游戏制作。请问我打开原版GMS2,好像说不再支持,推荐我下一个LTS BUILD的GM。我原来买的是STEAM版,请问能继续正常使用吗?
2026年06月06日 15点06分 15
前几天开的时候没注意,今天发现steam端已经更新成2026LTS了。话说买steam版,使用“原版”(咱理解为官网下载的单独安装包)是个什么操作,单纯不想装steam嘛
2026年06月08日 01点06分
@q糖豆p STEAM版有段时间不更新了啊,所以我下的原版,用账号也能正常用。怎么现在又回归STEAM了?
2026年06月11日 13点06分
@魔導紳士 steam更新不更新是看用的是哪个基础APP的,从原来的4模块(desktop、web、mobile、UWP)改为订阅制的时候,换了一个app id,用原来的是不会自动更新的。后来换成基础免费的时候好像没换,更新也没感觉到慢(也许会慢,不过咱长期不关根本发现不了)。另外用steam主要享受的是增量更新,官网版至少之前都是要下载完整安装包的,不知道后来改没。
2026年06月12日 02点06分
1