赞 | 40 |
VIP | 559 |
好人卡 | 234 |
积分 | 45 |
经验 | 251834 |
最后登录 | 2024-3-29 |
在线时间 | 5228 小时 |
Lv3.寻梦者 (版主) 八宝粥的基叔
- 梦石
- 0
- 星屑
- 4509
- 在线时间
- 5228 小时
- 注册时间
- 2009-4-29
- 帖子
- 14318
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 protosssonny 于 2011-11-4 09:11 编辑
今天给大家发一个“简易多背包系统”。
首先声明:
1、如果您是(新手+伸手党),请无须看我这些废话,直接把范例工程拿去用;
2、如果您是(新手+非伸手党),请看完我这罗罗嗦嗦几百字,再下范例工程,对您会有很大帮助的;
3、如果您是高手,请无视本帖子。
(新手+非伸手党的)正文部分:
自定义的全局变量($asd等以$开头的变量)是无法被存档的,即下次载入游戏存档时,上次运行有数值的全局变量将变成nil。所以自定义的全局变量只能随时计算随时使用。
而有些特殊的全局变量是可以被存档的,例如开关($game_swicthes[m])、变量($game_variables[n])、独立开关($game_self_switches[[m,n,"A"]])等等。于是我们可以利用他们能被存档的特性来储存我们的背包物品。
不要以为$game_variables[n]只是一个变量,其实$game_variables[n]还可以当一个开关、甚至一个数组。
例如当数组使用的情况:- $game_variables[1]=[1,3,nil,"等等"]
- p $game_variables[1]
复制代码 运行结果就是:[1,3,nil,"等等"]
于是我们把很大的变量1000号以上用来制作简易多背包系统的储存数组的想法是可行的,毕竟做一个正常的游戏用到1000+的变量几乎是不可能的,退一万步,实在发生了可能,我们可以2000+甚至3000+以上的变量,无所谓。
思路是,我们把数组$game_variables[1001]的元素定义为999个,每一个元素对应一个武器的数量、比如,当某武器3号数量为0时,数组$game_variables[1001]的3号元素元素就为0;武器5号数量为2时,数组$game_variables[1001]的5号元素元素就为2。作了这样的一一对应,再加上$game_variables[1001]是可以存档的,以后要调用某武器数量,就有调用数据的依据了。
我们把所有的物品、武器、防具都作了这样的一一对应以后,就可以做成一个简易的多背包系统了。
怎样定义一个999个元素的数组?很简单,比如1000号变量定义为含999个元素的数组:- $game_variables[1000]=[]
- for i in 1..999
- $game_variables[1000][i] = 0
- end
- #如此一来,$game_variables[1000]就是这样一个数组:
- #[nil,0,0,0,0,0,0,0,……,0,0]
复制代码 有同学可能会问,为什么要用数组来储存数据,直接用1号变量对应1号武器,2号对应2号难道不可以吗?当然可以,可是假如我们有300个武器、400个防具、900个物品,那么将消耗1600个变量,浪费了很多很多变量,而且管理起来也不方便。如果用数组来处理,只消耗3个变量,即1001至1003号,非常精简。所以我们选择了数组来储存数据。
最后总结一下,本教程提供了一个储存数据的思路——利用变量可以存档,可以定义为数组。同样的道理,我们还可以使用开关、独立开关形成数组来储存数据,方法是一样的。利用这个思路,我们可以储存大量繁多的数据列表,简单方便。写脚本也思路清晰,简单明了。
(新手+伸手党的)正文部分:
请直接下载范例工程:
简易多背包系统.rar
(247.82 KB, 下载次数: 8817)
高手的正文部分:
请无视本帖子,谢谢。 |
评分
-
查看全部评分
|