1、B站的入门视频

 https://www.bilibili.com/video/BV1dJ41117Tp/?spm_id_from=333.999.0.0 

讲得还不错,指的推荐,普通话不是很标准,但胜在啰嗦的不多。

2、简要总结一些要点:

2.1 整个RMMZ其实就是一个用node那边的技术包装过的网页程序,所以index.html是入口,libs目录下应该是可以玩很多花活儿的,但是一般不那么做就是了。

自定义写代码的两种游戏内方式:第一是脚本,第二就是插件,插件需要激活,脚本是绑定在事件机制下的,都是js

2.2 快捷键上,F5是刷新,游戏里按下F8和F12可以把chrome的开发者页面call出来

3、API资源

说实话,官方的那个文档简直不可理喻,写了个啥

 https://docs.google.com/spreadsheets/d/1gQNAoYKpkO9Qglgbi8IplX_BPvXmfvG3Rk-R27W30DU/edit#gid=334848342 

就这,等于啥都没写

用这个:

 https://docs.google.com/spreadsheets/d/1-Oa0cRGpjC8L5JO8vdMwOaYMKO75dtfKDOetnvh7OHs/edit#gid=1186334695 

里面有Example

插件编写指南里面的word文档:

 https://docs.google.com/document/d/176S5ldh330fltOy9IEsrcAfeIWGkelWa/edit#heading=h.3znysh7 

这也约等于是没用的玩意儿

给我科普起来了javascript

日本人的文档编写简直次次给人的体验都很差

4、实作

地图上增加一个事件

然后脚本就可以了

console.log("Hello World~");
var golbol999 = 1;
var mm1 = "";

fetch('http://date.jsontest.com/', {mode: 'no-cors'})
.then(response => response.json())
.then(function(data){
         console.log(data); 
         mm1 = data.date;
         golbol999 = golbol999 +1;
         $gameMessage.setFaceImage('Actor1', 0);
         $gameMessage.setSpeakerName('\\c[6]\\n[1]');
         $gameMessage.add("今天的日期是:"+ mm1);
         $gameMessage.add("全局变量等于:"+ golbol999);
})
.catch(error => console.error('出错了:', error));

首先第一点:

这里面的js权限应该不低,甚至可以用API去读写本地文件的,所以自由度很高。

第二点:

call网络的时候的小技巧,就是之前也都用过的那个,fetch里,mode:'no-cors'

第三点:

这种脚本没有记忆能力

接下来我试一试用本地的方式存储

但这里有个还需要摸索的东西,就是,这毕竟是一个游戏

所以你用别的方式来存储状态就遇到了一个很尴尬的问题,那就是....理论上每一个save存档,它就是一个平行世界

如果你用了通用存储,就会产生多个世界之间共享状态了的问题

【所以我大概理解了为什么脚本系统和插件系统很多都使用了地图变量状态、以及在那些元素上的TagNote,就是备注上做文章等技巧】

主要是需要让状态随着这个平行世界保存下来;