【QA】2018第1周

2018第一周就这样到了尾声,不出意外的话本周开始以后周末出QA,嗯,希望每周能有凑到足够的内容来填充XDD

Begin Step/Step/End Step

这是群里的朋友问的,觉得这个不能算问题,更多算是个小知识点,但不注意的话也许就真忽略了这个东西,但仔细想想还是有点用的。
在添加事件的“step”事件里会看到有这样三个事件:
[]
我们用的最多的当然是“Step”事件,这个事件在游戏中每一帧都会执行一次,那么这个“Begin Step”和“End Step”又是什么呢。
其实这两个事件也是每帧都会触发的,但是执行顺序永远“Begin Step”最先,“Step”次之,“End Step”最末。
因此如果你在“Step”中撰写的部分代码有严格的执行顺序要求,以前可能需要用一些条件来判断确保顺序,而现在可以分别写到“Begin Step”和“End Step”中来保证执行的顺序,可以省下一些判断和操作。

with的使用

同样是群里的讨论,而本质上其实更像是“With”的官方文档翻译:)
比如我们现在有这样一个游戏,场景里有10个不同的敌人实例,都是来自对象“obj_enemy”,如果我们现在触发了一个事件,要这个10个敌人同时向下移动10个像素,我们要怎么处理呢?

obj_enemy.y = obj_enemy.y + 10 ;

上述的写法是错误的,因为这么写会把所有"obj_enemy"的实例的y都设置成相同的值,那最后这些敌人就都会重叠到一起,我们需要这些敌人各自根据自身的y去移动就需要用到“with”

with (obj_enemy) y += 10 ;

这里,with后的括号内可以传入对象或实例,如果填入的是对象名,则该对象所有的实例都会执行后续的代码,并且是各自执行,因此使用这个方法可以让所有的敌人都根据自身的y坐标来位移10个像素
同时,当你在对象A中调用with方法去影响对象B时,在with后的代码中,other就代表了调用with方法的那个对象,比如如果我们在"obj_player"中写了如下代码

with(obj_enemy) {
    y += 10 ; //敌人对象各实例向下移动10
    other.x -= 10;//调用本方法的"obj_player"向左移动10
    }

如上,当使用with时需要能准确区分with前后的self和other所对应的对象,避免搞混了。

2017-12-30 23:40
Comments
Write a Comment