目前M.U.G.E.N有分别在DOS、Windows和Linux等操作系统上运行的版本

故事板

故事板(一)

故事板是一个Def文件,我们来看看一个最简单的实例

image.png

首先就是Info下的localcoord,这个参数我们之前就说过,这里指的是这个故事板的宽高

 

而SceneDef下的spr指的是当前故事板使用的SFF文件

 

Info和SceneDef都是必须存在的

 

接下来就是我们要重点研究的东西了,仔细下面的Scene 0,Scene的头部格式是这样的

[Scene X]

 

其中X通常是一个数字,作为标识,强烈建议写数字

 

我们继续看Scene 0的内容,可以看到三个参数,其中第一个参数layerall.pos指定Scene的所有元素的整体坐标

 

而layer0.anim则是对layer对象的一个动画组参数指定,在Scene中,可以设置10个对象,定义方式就是layerN,每一个对象可以显示文本或者动画组,指定动画组就是

 

layerN.anim=M

 

其中N为一个数字,从0开始,作为layer对象的编号,而M则为动画组的编号

每一个Scene最多存在10个layer对象

并且根据N的大小进行顺序层叠,从小到大

layer1会在layer0上面,而layer2将会在layer1上,以此类推

 

在上面的代码中,layer0对象的anim指向了编号为0的动画组

 

最后一个很重要参数为end.time,指定当前Scene的持续时间,一般60为1秒,当时间达到end.time时,将会强制转到下一个Scene,如果没有下一个Scene则故事板结束

 

比如上面的例子,将会显示sprite.sff中组号和索引号都为0的那张图像,持续显示5秒后故事板结束,5秒通过end.time也就是300再除以60得出的

 

在学习的过程中,我们必须要亲自测试故事板,有两个办法,一就是将故事板指定为Sysfile的logo,然后每一次代码修改后打开游戏就能首先演示故事板

 

第二个办法是利用exe文件进行命令行操作,语法是mugen.exe –storyboard X.def


 

2.p 故事板(二)

接下来我们说说SceneDef的其他参数,以方便下面内容的讲解

在上面的代码中,SceneDef只有一个spr参数,实际上你还可以通过snd参数来指定当前故事板使用的SND文件

 

同时你还可以和Sysfile一样,通过fontN的格式来为故事板指定字体,具体的方法和Sysfile的字体是一样的,只需要在SceneDef中定义就好

 

而Info仅有localcoord参数

 

每一个layer参数可以显示动画组或者文本,我们再看一个例子

image.png

这里呢通过layer1对象来显示一个文本“Hello”

需要注意的是

同一个layer对象不能同时指定anim和text

 

而layer1.font则是layer1的文本字体


指定text的layer称为文本对象,而指定anim的layer称为动画对象

 

我们先说说文本对象,文本对象有text参数,用于指定显示的文本内容,如果要换行,则需要添加转义字符“\n”,比如说layer0.text=“ABC\nXYZ,则将显示两行文本,第一行为ABC,第二行为XYZ

 

另外通过font参数也可以指定字体,指定的方式和Sysfile是一样的,我在主界面那一章已经说过了,这里再说一遍,font参数可以由六个数字组成

 

第一个数字为字体编号,字体必须已经定义,否则不显示,第二个数字为字体使用的色表,这个参数只有在位图字体下有效,为n时使用第(n+1)个色表,n从0开始

 

第三个数字为对齐方式,1为左对齐,0为居中,-1为右对齐

 

而后三个数字是可选的,为字体颜色,分别为R,G,B,取值范围从0-255

 

此外,文本对象还有textdelay可选参数,用于控制文本的呈现速度,此值默认为0,表示直接显示而非逐字显示,如果不为0,则表示文本逐字显示的间隔时间

 

文本对象必须指定text和font参数

 

之后就是动画对象,它只有一个必需参数anim,指定动画组的编号

 

最后是文本对象和动画对象的公有参数:

 

LayerX.offset指定对象的坐标偏移量,实际坐标=layerallpos.pos+layerX.offset

 

LayerX.starttime指定对象的绘制开始时间,如果省略为0,表示轮到这个对象时立即绘制,否则将延迟对应的时间

 

LayerX.endtime指定对象的绘制停止时间,如果省略则默认为当前Scene结尾

 

 

故事板(三)

先说Scene的参数,每一个Scene都有一个必须参数end.time,上面已经说过这个参数的作用,此外你还可以使用下面这些可选参数:

 

Fadein.time:淡入时间

 

Fadeout.time:淡出时间

 

Fadein.col:由三个数字组成,表示淡入前的屏幕起始RGB值,目前只能为0,0,0或者255,255,255,分别从黑色淡入,或者从白色淡入,默认为黑色

 

Fadeout.col:同上

 

Clearcolor:由三个数字组成,指定每一tick之前对屏幕进行填充的RGB值,如果R设置为-1则不填充,第一个Scene省略此参数的话则为-1,而第n个Scene(n>1)省略此参数的话,则使用第(n-1)个Scene的Clearcolor参数值

 

Bgm:指定背景音乐文件,如果第一个Scene省略此参数的话则不播放BGM,如果第n个Scene(n>1)省略此参数的话,则继续播放(非重放)第(n-1)个Scene的BGM

如果此参数值为空,则停止播放BGM

 

Bgm.loop:是否循环背景音乐,1为循环,0反之

 

Window:由四个数字组成,表示当前Scene的有效矩形区域

前两个为矩形左上角的坐标,后两个为矩形右下角的坐标

在此矩形外的地方的任何东西将不会显示,如果第一个Scene省略,默认为屏幕的完整大小,如果第n个Scene(n>1)省略,则使用第(n-1)个Scene的Windows数值

 

Bg.name:此参数用于开启BG元素,下面再详细说明

 

再说说一个新的对象,在这之前,我们都是使用layer对象,此外,故事板还支持sound对象,作用于SND内的音乐,sound对象称作声音对象

 

声音对象的定义方式为:

 

soundX.value=n,m

 

其中X为对象编号,从0到99,也就是说每个Scenc最多100个声音对象

 

此外声音对象还有以下这些可选参数

 

SoundX.starttime:声音播放时间,默认为0

 

SoundX.volumescale:音量比例,此值最高为100%,也就是说不能将音量扩大

 

SoundX.pan:声音的声道位置,0为中心播放,负值则为左声道,正值则为右声道,默认为0,最小值为-127,最大值为127

 

故事板(四)

上面三章我们说了Scene以及文本对象,动画对象和声音对象,当然这些都是概念,需要你们手动测试

 

上面我们都只说一个Scene,实际上你可以创建多个Scene,看下面的例子:

image.png

这是一个完整的故事板def文件,我可以简述下这个故事板的播放流程:

 

首先根据顺序播放Scene 0,淡入后开始播放bgm,同时动画对象layer0开始执行,播放动画组0,根据end.time可以得出图像0,0将会显示2秒后淡出

 

之后进入Scene 1

淡入后直接播放动画对象layer0,播放动画组10,根据end.time也可以得出图像10,0将显示2秒后淡出

 

之后进入Scene 2

淡入后播放动画对象layer0的动画组20,并且在1秒后播放sound.snd中的声音0,1

图像20,0将显示3秒,声音0,1将播放2秒(不循环)

 

然后故事板结束

 

我们可以看到,这个故事板有三个Scene,每一个故事板所用到的动画组都遵守原则放在当前Scene的最底部,之后便开始下一个Scene

 

最后要说的内容就是,在有多个Scene时,我们在调试的过程中,假设要看Scene 3的演示过程,则还要另外等待Scene 2和Scene 1,实际上mugen提供了一个参数用于指定故事板第一个播放的Scene的编号

 

这个参数定义在SceneDef下

参数名为startscene,后面接scene的编号

这也是我为什么在最开始要求你们把标识写成数字,而不是其他文本了

在调试完后,记得删除startscene参数

 

到这里关于Scene的知识就差不多结束了

其实不是很难嘛

 

接下来我们就是要讲解控制器了

第二部分的教程也就没剩多少了


你,确定要这么做吗?
正在处理中...