撰写了文章 发布于 2019-07-07 18:04:44
rpgmaker实现小游戏杂记
https://indienova.com/g/oneof这个游戏美术风格大赞,请关注一波。
最近用rpgmakermv为朋友做了个小游戏,代码量不高,时间前期后后至少有一个多月。今天小游戏算是基本完成了,在做这个游戏的过程还是有不少收获的。在此分享下我的心得。
1.项目管理
先不要说一个完成度达到发售程度的独立游戏,仅仅是这个功能点不多的小游戏前期后后花在上面的时间竟然有一个月。而这个游戏仅仅是一个独立游戏的一小部分。究其原因是一个字:懒。有人说做游戏最快乐的是整个项目的前10%,我完全同意这个观点。因此做游戏还是要有一个规划的,在某个时间节点必须要完成某些工作。
时间耗费这么久还有个原因是:对rpgmakermv默认脚本库的理解不够。了解这个库没有捷径,只能通过实现各种功能加强熟悉和理解。
2.如何隐藏窗口,使窗口变成透明
window.visible=false;
window.opactiy=0;
隐藏窗口是指整个窗口的内容都不可见,窗口变透明是指边框和背景色变透明,字体仍然可以显示。
3.sprite的宽度和高度问题
sprite=new Sprite();
sprite.bitmap=Imanager.load("xxx");
此时的sprite.height或sprite.width是0。mv默认脚本的图形库是pixi.js。mv只是在pixi.js的基础上创造出一个便于rpg游戏使用的库。pixi加载图像方式是异步加载(这种方法也许并不准确,pixi.js也许提供了同步加载的方法)。在执行完以上两行代码后,bitmap的加载并未完成,但程序继续执行下面的代码以防止程序失去响应。待加载完成后,某个函数会通知程序加载完成。这里我没有深究pixi等待加载完成的方法,而是遵循了rmmv脚本的方法。
但是这里有一个问题,比如我创造了2个sprite,这2个精灵的位置必须紧挨着,那么在rmmv中该如何做呢?可以采用下面的方法。
if(!xxx._inti){
sprite2.y=sprite1.y+sprite.height;
xxx._inti=true;
}
将以上几行代码插入到场景的update函数中。因为场景在切换前或执行场景的create方法。切换场景后,SceneManager函数会检测新场景是否isReady()。当isReady()方法返回值为true时,才会执行切换。而场景isReady函数里会检测bitmap是否已经加载完毕。
Shitake 1年前
花时间多其实还有个原因:rmmv写的烂【雾 太多不走寻常路的奇怪写法了 比如那个十分诡异的继承实现等等
陈娜佳 [作者] 1年前
陈娜佳 [作者] 1年前
Shitake 1年前
发布
云梦渊泽 1年前
陈娜佳 [作者] 1年前
发布