如何对2.3以前的脚本进行Function转换

GameMaker Studio 2.3 从 beta 至今也有一年时间了,但在中文圈成体系的教材主要还只能倚赖老版本的那几套,于是出现了一个非常尴尬的问题,那就是由于 2.3 之后把以前的 Script 脚本改为了新的 Function 定义,自定义函数的格式和规则都发生了一些变化,这些变化对于有一定经验和编程基础的朋友而言不难掌握,但对于许多从零开始的小白玩家就完全是一场噩梦,明明自己一个字符一个字符对着教程敲下的代码,为啥点下运行就给我报错呢?!
最近就有好几个朋友为这个问题给我留言和私信,因此想着还是单独介绍一下吧,本文不会太多介绍新的 Function 的各种使用技巧,更多会在介绍老的 Script 文件如何修改转换为新的 Function ,使用的示例脚本也是官方在介绍新老版本变动时所采用的,为了让新人更容易理解,行文比饺拖沓罗嗦,不推荐熟练工阅读。


首先我们来看看这个示例脚本 move_follow() ,这是一个用来指定对象跟随目标移动的脚本

/// @function move_follow(_object, _speed);
/// @param {index} _object The Object to follow
/// @param {real} _speed The speed to follow at

var _o = argument0;
var _s = argument1;
if (point_distance(x, y, _o.x, _o.y) > 0)
{
   direction = point_direction(x, y, _o.x, _o.y);
   speed = _s;
}
else { speed = 0; }

这段代码中最上面三行被注释掉的内容被称为 JSDoc 注释,可以理解为对这个脚本方法的一个说明,

/// @function move_follow(_object, _speed);

方法名称为“move_follow”,可以传入两个参数"_object"和"_speed"

/// @param {index} _object The Object to follow
/// @param {real} _speed The speed to follow at

具体说明两个参数的用途含义和属性,在老版本中只有按格式写好 JSDoc 才能在调用脚本时在编辑器中看到代码提式(如下图),但不写其实也不影响脚本的工作,但为了方便自己和他人阅读理解代码,自然还是推荐遵守的。

接下来我们看一下具体的功能性代码部分

var _o = argument0;
var _s = argument1;

这两行就是把传入的参数分别赋值给了临时变量"_o"和"_s",用""

2021-11-13 15:13
Comments
Write a Comment