本教程将教大家如何使用数组和辞典与Xml实现简单的背包内容展示以及商店商品展示。内容包含点击显示背包内容、购买、卖出,更新背包内容。
可以点我下载教学工程,或在引擎开始页面找到【学习】->【模板示例】->【功能示例】->【数组辞典示例】
你可以观看视频学习,也可以下拉查看文字教程
商店背包的制作教程
将背包道具信息保存在人物辞典中,需要时取出转换为数组。 并在进行更新后,重新放回到人物辞典中。
在场景中添加【道具】图层组,用于存放商品和背包内容
首先,我们要先展示出商店的内容,在本教程中,将从xml文件中加载商店数据。 因此我们添加一个Xml、Ajax组件,并从外部导入我们准备好的xml文件。(您可以定义自己的Xml文件结构)
场景开始时,通过Ajax组件加载xml文件数据,并导入到XML组件中。
3种类型的商店需要分别点击不同的按钮来控制,为此我们添加一个商店按钮。
在该按钮下添加实例变量:商店名称,用于区分不同的商店。
拖3个实例进入场景,分别设置实例变量的值为:武器、防具、药水。
新建【道具精灵】精灵、【道具描述】文本框、【买入按钮】按钮组件。
为【道具】添加实例变量,用于在后面获取名称、价格等信息。
【买入按钮】与【卖出按钮】同样添加实例变量
放入实例仓库场景中,后面会通过事件表生成。
添加一个数组,我们会将商店内容先放入数组,然后循环数组,将内容显示在场景中
当点击商店按钮时,调用动作组【显示物品】,传入的参数为实例变量【商店名称】
接下来实现动作组【显示物品】。 添加全局变量【当前显示类型】,动作组中,将类型设置为动作组的参数(也就是点击的商店按钮的实例变量),并将【当前商店】数组的容量初始化为(0,3,1)
根据要展示的商店道具类型,循环指定节点,并将内容添加到数组中。
在显示商店道具前,先销毁之前已经存在于场景中的商品内容。
在场景指定位置循环生成商店商品、道具描述、买入按钮, 并为对象的实例变量赋值。
在显示出商店内容后,同时需要显示同类型的背包内容。根据教程的制作思路,我们将背包数组信息转化为字符串保存在辞典中,并在需要用到时取出,放入临时数组。因此我们创建一个辞典对象和一个临时背包数组。
设置【当前背包】的初始属性
继续在【显示物品】动作组中添加事件。 首先在辞典【人物属性】中查找对应类型的数据,如果存在,则取出放入【当前背包】数组。 如果不存在,将【当前背包】的容量设置为初始值(也就是数组中没有任何内容的状态),然后放入辞典。
与商店数组一样,循环创建背包内容,并为实例变量赋值。
然后,在场景初始化后,默认让他显示武器商店
完成了上述操作后,预览游戏即可看到效果:当点击【武器商店】、【防具商店】、【药水商店】按钮时,会显示对应的商店内容。
由于目前人物背包中没有数据,因此不管点击哪一个商店按钮,背包显示界面都是没有内容的。下面我们实现点击买入按钮时,将商品加入背包的功能。
为了购买商品,我们在游戏开始时在【人物属性】辞典中加入金钱数据。
添加金钱显示文本对象,放入场景。
每帧更新金钱信息
当金钱不够时,禁用买入按钮,反之启用。
当点击买入按钮时,购买商品。
在【购买物品】动作组中,先通过名称获取要购买的道具对象。
在子事件下面,从辞典中减少持有的金钱数量
如果当前背包中存在该商品,则数量加一。 如果不存在,将商品信息添加到数组中。
在更新完背包数据后,将背包数据重新放入辞典中保存。
最后重新显示一次商店和背包界面
下图为【购买物品】动作组全图
点击卖出按钮时,卖出对应物品。
同购买一样,在【卖出物品】动作组中先获取要卖出的道具对象。
增加金钱
如果该商品在背包中只有一个,则删除这条数据。 否则,数量减一。
最后更新背包数据到辞典中,并刷新商店和背包界面。
下图为【卖出物品】事件表全图
以上就是通过数组、辞典和XML实现背包和商店的教程的全部内容。建议下载教学工程,详细查看事件中的具体参数、表达式等内容。