【QA】2017第49周

作为一名新晋全职奶爸,觉得时间果然很不够用,于是之前想的教程啊视频什么的统统跳票到不知什么地方去了,目前还能坚持的无非是油管视频的搬运和后台一些问题的答复,当然,也都是些很简单的问题,不过觉得这些问题也许是很多GMS新人都会遇到的,所以决定把这些问题摘录出来,一来是记录,二来也希望留档给以后加入的新人:)

微信后台消息的坑

第一个问题跟GMS无关,但我觉得有必要重点优先说一下
刚在第三方的公众号管理后台看到在12月1日有位朋友在微信后台给我发了很长的一条私信,但这条消息在微信后台完全找不到,这大概是微信后台的bug,所以我也无法得知这位朋友是哪位,也无法进行回复,很抱歉。
你提到了GM在国内的学习环境和GMS和GM异同的一些问题,我相信你接触GM应该比我更早,我是从GMS2才正式开始接触这款引擎的,你提到的物理函数的翻译工作我会考虑,但目前来看过分依赖内置的物理引擎也许在很简单的游戏里会方便,但是稍微复杂一点可能就会很不灵活,我有时间的时候会再看一下,因为目前个人没考虑涉足物理游戏所以确实还没看过这部分内容。
另外,因为这篇文章是临时起意,而微信公众号的后台只能保留5天以内的消息,所以一些问题我只能凭记忆来描述,不能完整还原对话,甚至可能连提问者是哪位都无法确认,先抱歉一下,希望以后能做得更好。
微信后台的消息同样不适合沉淀内容,真有问题可以考虑随便挑一篇文章来留言,或者发邮件到lazyeo[#]qq点com,我想这么写大家能看懂的吧XDDD

Creation Code的坑

第一个问题来自“巡山大大王
在GMS的场景编辑器面板左侧,可以看到下面这样一个按钮——“Creation Code”

点击以后会打开一个代码编辑器的窗口,你可以在其中填写一些代码或D&D拖放模块,这部分代码是当游戏场景首次创建时会执行的,有点类似每个Object的“Create”事件,但是这里有个坑。
这位朋友在这个地方初始化了一个全局变量,然后在游戏场景中的对象的“Create”事件中进行调用时却提示该变量未声明,但如果在“Tap”事件中就可以正常调用。
如果仔细读过官方F1的文档其实就会知道,这个“Creation Code”尽管是在游戏场景初始化时运行的,但却要等场景中所有的对象都生成(即“Create”)之后才执行,所以对象的“Create”事件在前,这个“Creation Code”在后,就出现了这样的错误,这应该是从GMS1代就这样了,确实很奇怪,一般人大概都会觉得这个初始化代码在前吧,不明白YoYoGames的工作人员是怎么考虑的了😂

Android调试错误

这个问题来自“陈大根

我按照知乎上的方法成功载入了JDK SDK NDK并且成功和手机连上,但是就是无法运行也无法导出 提示错误很多 我把更新文件删了重装了很多次也没用,

我看了下提示错误是缺少头文件 STDLIB.H头文件

说实话这个问题我没遇过,经过检索看到国外论坛上有GMS1遇到这种问题的,大多是NDK版本的问题,但最后这位朋友自己解决了,下面看一下他自己的解决方案吧

  • gradle提前下好
  • 手机连上后一定要点数据连接默认是充电
  • 电脑装了360手机助手要删掉会占用一个什么导致连不上
  • 您的Android studio 我一直跳ADB启动不了 换了官网的就好了 这个和软件没关系应该是我操作不当的原因但是我觉得官网的更简单一点

其实运行的时候用debug模式 GML会把问题报错 按照他的报错一点点来就OK了

这个问题我估计是个案,其中的影响因素可能有很多而不是某个单一的原因,但这种自己寻找原因并且解决的精神超级赞的👍

全局变量和取整

这两个问题来自“小馒头卡
很简单的问题,但如果是没经验的新手,被卡在这种算不上问题的问题上也很正常,所以我也摘录了出来。
第一个问题是这位朋友当时不知道全局变量的存在,他在学习官方教程时试图用局部变量来同步分数的变化,然后当玩家积分到达一定程度以后提升游戏难度,但是这个局部变量是放在敌人对象里的,然后敌人被摧毁以后这个变量也gg了……
在这里提醒所有“新人”,在GMS中声明变量时可以使用"global"前缀来声明全局变量,这种变量可以在整个游戏中被任意对象读取和修改,一些需要贯穿全游戏的数据可以用全局变量来控制,比如游戏积分之类,下面是示例

global.score_ = 0 ;  //全局变量,全游戏可用
score_ = 0 ;             //本地变量,当前对象可用
var score_ = 0 ;       //临时变量,当前脚本可用 

另外这个朋友还问了一个问题,他使用random_range()获取随机数时发现随机出来的数字都是带小数点的,他希望只有整数,这个在GMS中其实有自带的取整函数,比如floor()就可以向下取整,这个方法可以去掉小数点后的数字只保留整数部分,示例

val = floor(3.9)

这里val最后会等于3,这是F1文档中的官方示例,另外还有个round()函数也可以取整,只是取整规则不太一样。


第一次QA就先这样结束吧,大家有问题依然可以在后台留言,当然为了避免被微信后台坑,如果我没回复可以持续骚扰,现在关注的人不多我还看得过来应该还能全部回复的过来,如果我没回复,一种可能是我还没看到(超过48小时没互动的话我看到也不能回复了),第二种可能就是你的消息被吞了。
另外推荐使用文章的评论留言功能,起码这种消息可以长存,另外最好是发邮件给我,可以把问题描述的更清楚,我会定期去看,有的问题也许我也无法一下子给出解决方案,但是一起讨论讨论应该也会不错吧。

2017-12-04 20:45
Comments
Write a Comment