新人求助,入门问题
gamemaker吧
全部回复
仅看楼主
level 1
chibabin 楼主
在初始环境下运行错误,而且过程不可逆,感到非常疑惑。code error放在一楼
跟着教程做DnD,前面一直运行正常。做到创建脚本,结果运行错误。删除脚本、恢复原先的状态,还是不能运行。
最后把object的事件全删完了,几乎回到初始环境,结果还是错误
2022年03月17日 08点03分 1
level 1
chibabin 楼主
___________________________________________
############################################################################################
ERROR in
action number 1
of Create Event
for object <undefined>:
Variable <unknown_object>.hsp(100003, -2147483648) not set before reading it.
at gml_GlobalScript_anim (line 6) - if(!(hsp == 0))
############################################################################################
gml_GlobalScript_anim (line 6)
2022年03月17日 08点03分 2
level 1
chibabin 楼主
最迷惑的就是不可逆。重新做了一遍,结果一开始做的好好的,然后创建脚本,就出问题了。
ctrl+z,删除脚本,恢复原先的界面,还是错误。之后再怎么操作都运行不起来。除非新建
怀疑是版本问题?但就是在yoyo官网上下的版本
2022年03月17日 08点03分 3
吧务
level 13
代码在<unknown_object>生效,初步判断是在script里。
但script是执行时调用的,除了……在2.3环境里照搬2.2教程的script写法,把代码留在了script以内,function以外的地方。
2022年03月18日 07点03分 6
确实问题就是照搬教程[真棒]注意到新建script都自带一个DnD框子。点开链接,在官网发现一年前gms的版本改动
2022年03月18日 10点03分
那现在script内要怎么定义变量呢?看了gms官方的说明和一些社区的问答,感觉还是没解决问题。图贴在楼下
2022年03月18日 10点03分
@chibabin "在script内要怎么定义变量",理论上和“在script外要定义变量”的方法一样,但通常来说没有在script“里边”定义变量的必要。至于楼下的图。请先说明一下你的walk_spd是在哪定义的初始值。至于为什么右不报错左报错,多半是测试时先按下了左。
2022年03月19日 05点03分
@q糖豆p walkspd是直接在object里定义的。测试时两个键都按了,能正常向右走
2022年03月19日 06点03分
level 1
chibabin 楼主
script内直接使用X+=1这样的计算式似乎都有问题。说是未定义变量。那么该咋做?Dnd
截图在下面
___________________________________________
############################################################################################
ERROR in
action number 1
of Step Event0
for object oplayer:
DoNeg :1: undefined value
at gml_Script_get_input (line 44) - hsp = -walk_spd;
############################################################################################
gml_Script_get_input (line 44)
gml_Object_oplayer_Step_0 (line 6)
2022年03月18日 10点03分 7
level 1
chibabin 楼主
2022年03月18日 10点03分 8
吧务
level 13
首先声明几件事:
0-咱用DND还是GM8时代,所以对于S2的DND界面可能会存在解释错误;
1-在咱的框架里,从DND转型GML是发生在使用script之前的,拿DND做script感觉就挺怪的;
2-咱平时用2.2,对于2.3的变化也只是在GML方面了解一些,DND界面……根据现有经验推测好了。
(其实咱更建议楼主跳过script直接做这个效果)
说回正题,从8楼的截图里绿框、蓝框部分咱没有找什么问题。如果是8.0的拖拽,基本也就是这样做。如果能向右而不能向左,下一步咱只能建议把-walk_spd改成0-walk_spd进行尝试了。//这是一开始的想法
而红框部分,经过楼主提示特意又看了一眼,这里声明了两个argument,而其中一个的名称就是walk_spd,且没有勾选Optional。首先说一下argument(参数),这是在调用一个script(或funtion)时需要额外输入的内容。就像调用正弦函数sin的时候,要写sin(a),这个a(或者填入的其他变量/表达式/数值)会“传递”给函数来使用。目前不知道楼主在调用函数时是否正确填入了两个参数。
下一个和咱框架不一致的地方,可以说是“命名混乱”了。如楼主所说,Object_Player里定义了walk_spd这个变量,funtion里使用“相同名称”的变量来做参数接收。这样就会出现“在不同区域,同一个变量名表示不同内容”的情况。咱知道有些人是特意研究过“作用域”这种事情的,如果楼主对这块了解的没那么深入(或者说和咱差不多同一个水平)的话,尽量不要这么用。
这样的话,看上去“有可能”是按右时,赋值使用了“原实例的变量”,而按左时使用了“参数接收变量”。如果二者的差距在于“是否使用了表达式/运算符”的话,按左的那里可以改为先用walk_spd直接赋值,然后用0减自己,或用-1乘自己。这种方法即使有效,也治标不治本。还是建议楼主先不使用script/funtion,至少在GML阶段再这样做。
2022年03月19日 08点03分 10
专业[真棒]
2022年03月19日 09点03分
1