RPGMAKER游戏引擎基于JavaScript的插件制作(二)——如何理解插件,以及编写代码时的注意事项

之前写的时候不想写这部分就先跳过了,于是拖到现在…
这篇主要作用是做一些细节上的整理,根据我的经验不断完善,也欢迎在评论中补充。
重要的知识放在重写方法部分。

2. 1如何理解插件

我认为读我这篇博客的人应该都已经大概了解过插件了,但我还是按照自己的理解说一下吧。

游戏引擎虽然已经预设了许多的功能,但是我们做游戏的往往想添加一些新的功能,又或者修改一些不完善的功能,而游戏引擎也往往会留下一个接口,让我们可以使用自己的代码接入其中,我们自己写的,独立于原来代码的文件,就是插件。

MOD,一些外挂,或者是没必要写入引擎却需要用到的小功能,都是写在插件里,学习插件使用,有利于我们了解游戏引擎的原理,为以后开发完整的游戏打下基础。
骑马与砍杀的MOD就是直接用开发者提供的游戏引擎制作的,而GTA系列则有专用的MOD编辑器

具体插件如何使用后面的贴会介绍。

2.2编写代码时的一些注意事项

JavaScript作为一个最初用于网页编程的语言,很多功能都是为了网页设计的,比如正则表达式,DOM(文档对象模型),json表(用对象来传递数据)都是为了方便网页的使用,当然json现在由于其易于解析的特性,现在也成为了常见的数据交换语言。

我仅介绍几个在RM使用中需要比较特别注意的JavaScript知识点:


2.2.1命名的自我修养

我觉得没学会规范的命名的人都不能算合格的编程者,好的命名不仅对你自己有用,对你的合作者更重要,这一点我就不赘述了

一般变量名,一般对象名,普通函数名:“驼峰命名法”,即第一个单词采取全小写,后面的采取首字母大写,如:collegeStudent
createObject
构造函数名:首字母大写
全局变量名:以 $ 开头,系统提供有两种全局变量,分别是以$ data开头的(如$ dataActor)和以$ game开头的(如 g a m e M a p ) 。 其 中 game Map)。其中 gameMap) data开头的是系统储存在data这个文件夹中对象属性的调用通道,通过这个变量我们可以读出储存在Json表中的内容,这些内容一般在引擎的界面编辑。而$game开头则是游戏运行时产生的临时变量,这些变量由 $data数据和游戏运行的情况实时产生。
另外 $game变量带有方法而 d a t a 变 量 不 带 有 , 如 data变量不带有,如 datagameMessage.add()函数就是用于弹出对话框。
命名空间:自制多个插件时,为了方便多人协作,常先以自己的名字缩写设立一个命名空间,然后再在这个空间下设子空间,如:

var JRSXZM=JRSXZM||{};  //使用或语句是为了防止重复定义覆盖掉之前定义
JRSXZM.sonSpace={};

数据类型转换函数:所有单词首字母大写,如String:字符串转换函数
常量:全字母大写,单词间以下划线分割如MAX_VALUE

2.2.2关于数据类型

1.JavaScript变量类型是动态类型,即你不需要对一个变量设定类型,而是根据你的赋值自动确定。
这也许省事了很多,但是要注意,这也很容易出错,字符串必须用引号;
如果你不放心,可以使用以下语句强制定义,这时创建的是一个空变量
var a=new string

2.JavaScript中数组是一种重要的数据储存单位,JS的数组自带完善的处理方法,对于编程很有帮助

3.Null和Undified:报错时经常出现的字符,前者指“无效”,即指针指向无效区域,你可以通过给变量赋值Null清除内容,而后者则是表明你没给这个变量赋值,两者区别要搞清楚,这对你DeBug很重要。

2. 2. 3 尽量将方法模块化

编写函数时,如果这个函数的功能需要由几个小功能合在一起实现,那就将它们模块化吧,即每一个小功能都给它写一个函数。

如一个按钮点击响应的功能,包括点击检测,点击后图像变化,点击后事件响应,事件响应又包括不同条件下的响应,这些小功能都写在单独的方法里。

另外,之所以要模块化还有另外一个原因,那就是一个功能的执行需要调用不同对象里的数据,举个简单的例子:
战斗是使用Manager对象处理,战斗中使用物品是要对Object对象进行处理,使用技能是对Actor对象处理,如果都写在一个函数里,为了调用其它对象的方法,就在加上一大堆前缀,如:

battleManager{  //战场处理者对象
object. useObject(型参); //调用Object对象中的使用物品函数
actor. playerActor. useSkill(型参) ;//调用玩家角色的技能
}

如果你已经把那些方法都写在了battleManager中的一个细分函数里的话,就可以

battleManager{  //战场处理者对象
useObject(型参); //调用Object对象中的使用物品函数
useSkill(型参) ;//调用玩家角色的技能
}

这样就不会面临在一个花括号中处理三个不同对象的尴尬情况了


以上看不懂没关系,有些内容是为后面内容补充的

链接

第一节:前期准备以及RPGMAKER内建逻辑
第三节:重写方法预备知识教学
第四节:重写方法(一):命名空间
第五节:重写方法(二):call函数,apply函数,覆盖式重写与复制式重写

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值