本帖最后由 KB.Driver 于 2019-3-10 18:09 编辑
精灵(Sprite)与位图(Bitmap)是RGSS中两个重要的类,灵活运用这两个类就可以为你的游戏增加很多个性化的内容。 那么,多说无益,让我们新建一个RMVA工程,打开脚本编辑器,在插件脚本处新增一栏,动手输入以下代码吧。 注意,代码中所有符号均为英文半角,输入时记得关闭输入法。 sprite =Sprite.new # 注意字母的大小写 goddess_bitmap =Bitmap.new("Graphics/Battlers/Goddess") sprite.bitmap = goddess_bitmap rgss_stop
注意,动手输入代码也是在大脑中记忆代码的过程。直接复制粘贴的话,学习效果将会大打折扣。 输入完成后,我们在脚本编辑器中按下确定,点击工程里右上角的绿色小三角(或者快捷键F12)运行游戏看看效果:
运行结果显示,画面的左上角出现了一个男神的图像。 下面我们来分析一下这段代码。
sprite= Sprite.new Sprite是RGSS里精灵的类的名字,这里用它的.new方法生成一个Sprite的实例,并将它赋值给sprite变量。 这里给不熟悉面向对象编程的同学简单解释一下类与实例。 如果用最浅显的说法来讲,“类”就是一个“类型”,这个类型如同整数、字符串等类型一样,所有这个类型的变量都会有相同的特征。 Sprite.new就是一个Sprite类型的变量。 但是,在面向对象编程中,我们把这个类型的变量叫做这个类的实例。 也就是,Sprite.new生成了一个Sprite的实例,并且我们把它赋值给了sprite。
goddess_bitmap= Bitmap.new("Graphics/Battlers/Goddess") Bitmap是RGSS里位图的类的名字。同样地,这里生成了一个Bitmap的实例,并将它赋值给goddess_bitmap变量。 与上一句不同的是,这一句的.new方法后面用括号传递了一个字符串作为参数。 这个字符串的作用是提供一个带文件路径的文件名,这个位图对象会根据文件路径寻找对应名字的图像,将图像“读取”到这个实例中。 这里解释一下文件路径。工程运行时,默认的文件路径就是Game.exe所在的位置,因此在用Bitmap读取图像时只需要补充这之后的路径。 在游戏文件夹里,是不是刚好有叫做Graphics的文件夹?打开进去后,又有名为Battlers的文件夹,这就是图像的路径。 为什么打开了Battlers文件夹没有找到名为Goddess的文件呢?既然没有这个文件Bitmap又是怎么读取的? 实际上,RPGMaker中有RTP素材。当找不到某个文件时,RM就会到RTP中去搜寻。 要知道RTP中有什么素材可以打开工程里的媒体库查看。
所有媒体库中蓝色圆圈的素材就是RTP中包含的素材。在安装了RPGMaker VXAce的电脑上运行时,游戏工程文件夹内没有RTP素材也可以正常运行。
让我们继续看下一句。
sprite.bitmap= goddess_bitmap 还记得第一句里生成的sprite吗?它是一个Sprite类的实例,因此与所有Sprite一样拥有自己的一些固有属性。 这一句里,我们修改了它的bitmap属性,将它变成了第二句生成的goddess_bitmap。 位图(Bitmap)就像胶卷相机拍照后留下来的胶卷,我们没办法直接看。 而精灵(Sprite)则是一个放映机,当你把胶卷交给它,它就把胶卷投射到屏幕上。 sprite.bitmap就是sprite这台放映机现在放映着的胶卷,它一开始是空的。 当我们把sprite的bitmap设置为goddess_bitmap后,sprite就把变化后实实在在的 “胶卷”投射到屏幕上了。
rgss_stop 让我们看看最后一句rgss_stop。 rgss_stop是RGSS的内置函数,它等同于loop { Graphics.update }。 loop是一个循环语句的关键词,它后面的大括号的内容是用来循环执行的语句。 我们先不要管大括号内的语句是什么,只要知道这一句的意思就是不断地刷新画面。 我们的游戏是在屏幕中显示的,只有让屏幕刷新才能看到图像。
|