30 自定义方法该怎么用
也许想利用这个功能并不简单功能介绍
编辑器中有一部分内容是没有以独立的事件的形式来设计的,也就是说,没有办法直观地设置这些内容,而是需要以代码的形式对游戏内的变量进行赋值,或是执行一些函数,这就是
基本格式
在使用自定义方法前,先来了解一下自定义方法表里的基本样式,搞清楚各个单词代表的功能:
与程序上函数的写法非常类似,括号框起来的即为使用时需要替换掉的单词。简单点说,括号内的粗体字(也即图里的变量名)需要自行填入相应的数字,而没有加粗的部分直接删掉即可。
在表格里,你可能会遇见以下这种相对不规范,但更好理解的自定义方法格式:
这种写法的自定义方法只要填入相应数值并去掉 <>
即可。注意 str:
也要一并填入
那么接下来你可能会有新的问题:我怎么知道这个单词需要填入怎样的数值呢?
还记得图里面蓝色下划线的数据类型吗?它就给你指出了需要填入的数值格式:
数据类型
布尔型(Bool)
布尔型是最好理解的一种数据类型,它能够包含的值只有两个,就是真(true)和假(false),就也可以想象成让某个功能开启和关闭。举个最常用的例子,在4-4
懂你这关中,二拍子的轨道是可以抖动的,与其相关的参数是 wobblyLines, 如果你在自定义方法中输入wobblyLines = true
:
轨道就会变成这种抖动形式。
如果你想要在后面关掉这个功能,那么就再加入一个自定义方法,填上wobblyLines = false
,这样抖动效果就取消了。
浮点型(Float)
显然很多参数并不仅仅只用开启和关闭两个状态就足够了,它可能是需要用一个数值来控制的。我们在其他的事件中也经常需要填入各种值,例如轨道的位置(0~100%)
,节拍的长度等等。这个值可以是整数也可以是小数,总之他得是一个数字。举个例子:statusSignWidth这个参数可以控制 statusSignWidth = 199.99
:
状态牌就比文字部分更长了。
你也可以在编辑器里试试其他数值,甚至是负数。
整型(Int)
有的参数也并非是允许填写任意的数字的,它必须得是一个整数,诸如指定第几号房间,第几号轨道或是移动多少个像素都是如此。举个例子,想要打开或是关闭某个房间的地面反射效果,在自定义方法中输入DisableRowReflections(0)
注意:自定义方法里四个房间的编号并非是 1, 2, 3, 4,而是 0, 1, 2, 3。轨道编号也是如此。
这样第一个房间中就不会再出现反射效果了。
文本型(String)
有些参数的值既不是开/关,也不是数字,它必须得是用一串词才能描述出来,比如游戏里角色的名字。这里介绍一个自定义方法,可以随时修改轨道上对应的人物,其函数是ChangeCharacter,里面需要填两个空,分别是角色的名字(文本型),以及轨道的编号(整型),中间用英文逗号隔开。举个例子,我们要把第1个轨道的科尔变成洛根(他的角色名字是Boy),在自定义方法中输入ChangeCharacter(str:Boy, 0)
就能替换人物了。
注释类自定义方法
还有一种特殊的自定义方法,代码是由“()=>
”开头的,需要在紫色版块中添加一个 4-1
中的火车,我们也能在关卡中看到镜头在火车上的移动。这并非是只用移动摄像头就能做到的,而是需要移动“真实摄像头”。举个例子,我们把主题就设置为夜之列车,然后在注释中输入()=>trueCameraMove(0, 0, 45, 1, Outsine)
:
这里头要填写的变量有些多,但本质上也并没有太多区别,只要我们明确每个地方要填进去什么就可以了。第一个数字指的是房间号(整型),第二个数字指的是移动x轴的像素量(整型),第三个数字指的是移动y轴的像素量(整型),第四个数字指的是移动镜头的动画时长(浮点型),最后一个要填写的是缓速模式(枚举型)。不必太在乎什么叫做枚举型,你要做的就和设置移动房间与摄像头无异,区别只不过需要自己打字进去而已。
执行时间与排位顺序
你可能发现了,自定义方法里除了填写方法名称的框之外,下面还有两个参数:执行时间
和 排位顺序
:
通常而言这两个参数保持默认设置即可,需要更改这两个参数的特殊情况在表里也会有特殊说明,按照说明设置即可。但在这里还是要说说具体作用:
执行时间
:拥有两个选项 OnBar
和 OnPreBar
。默认为 OnBar
, 即时间到达这个事件时立刻执行。而另一个参数 OnPreBar
则会让这个事件提前600ms
执行。(这也是为什么需要避免600ms以上偏移)
排位顺序
:同一时间设置多个自定义方法时,你可能需要让这些事件按一定顺序生效,这个时候就需要设置这个参数了。这个参数支持负数,数字越小,事件越早生效。
我知道你还想问什么
你也许会有这种疑问:为什么官方要设置一个“调用自定义方法”,像写代码一样完成一些明明是很成熟的功能和特效?为什么不把它们也做成普通的事件直接添加就好了?
按照官方的说法,凡是官方图中有,但编辑器内没有的效果,都是官方并不希望在自制图里被玩家大量使用的。有些功能会考虑到在某些特定的剧情关里使用一次,比较应景,但并不一定适用于绝大多数关卡。当然,也有一部分功能是没来得及做界面而暂时以自定义方法的形式出现。
总之,不使用“调用自定义方法”完全不妨碍每个玩家制作出优秀的关卡。使用这些,甚至更丰富的“条件”功能,甚至在编辑器里编写各种逻辑事件,只能起到锦上添花的作用。归根到底这依然是一个普通的可音押的单键节奏游戏,节奏的排布,镜头的运用,素材的创意,才是自制关卡的核心。