一年好景君须记,最是橙黄橘绿时。这篇文章主要讲述微信小游戏开发实战11:使用本地缓存相关的知识,希望能为你提供帮助。
本地缓存就是将数据存储在玩家的手机上,例如玩家的得分或者关卡存档,这样当下次打开游戏时,就可以通过读取已经的存储在本地的数据,对游戏中的内容进行设置。
在“精致1010”游戏中,我使用了本地缓存的功能,将玩家的声音和振感设置进行了缓存,这样当玩家下次进入到游戏时,就会恢复之前的设置。
下面,就就让我们来看一下,如何实现这个缓存设置的功能。
首先,需要添加“本地缓存”的插件。点击功能区的“添加插件”按钮。
文章图片
在弹出的“管理插件”对话框中,打开“本地缓存”插件。
文章图片
打开后,回到积木区的“插件”中,就能够看到与本地缓存有关的积木了。
文章图片
简单解释一下这些积木块的意思。
- 设置缓存 KEY 的值为 VALUE
: 将某个值 value 存储在本地,并且为它设置一把钥匙 key,通过这个钥匙 key,就能够找到这个存储在本地的值 value。钥匙和值是一一对应的关系,就是说每把钥匙对应一个唯一的值。因此,当你需要存储多个值时,就需要对应的设置多把钥匙才行。
- 删除缓存 KEY 的值:删除掉本地存储的钥匙 key ,以及其对应的值 value。
- 清空全部存储值:删除掉本地存储的所有的钥匙 key ,以及对应的值 value。
- 获取缓存 KEY 的值:通过唯一的钥匙 key ,拿到那个与它对应的值。
- 缓存 KEY 是否存在:判断是否存在钥匙 key,如果钥匙不存在的话,也就意味着也不存在本地存储的值了。
文章图片
我们设置了一把叫做“声音”的钥匙 key,然后为其设置了一个用于判断声音是否开关的值 value,这个值只有两个状态,0 表示声音关,1 表示声音开。
在游戏启动后,首先去判断“声音”的钥匙 key 是否存在,存在的话,就读取一下这个本地的值,将它设置到全局变量“全局-声音”中,然后根据这个全局变量来设置声音按钮上显示的文字。
当声音设置的按钮被点击时,通过全局变量“全局-声音”来判断当前的声音是开还是关,如果开着的话,就将其关闭,反之,就将其打开。最后再将设置后的全局变量“全局-声音”的值存储到本地。
这样就实现了一个声音按钮控制,并且会将玩家的设置保存到本地,这样下次打开游戏后,就会还原到先前的设置了。
文章图片
除了缓存像 0,1,2 这样的整数,也可以缓存文字,例如“我是一段要缓存的文字”,另外,也可以将数据中的列表,表格,对象进行缓存,下面,就讲一下其它数据的缓存和读取的方法。
表格的缓存和读取假设我们要缓存一个 5x5 的表格。
文章图片
如图,我们创建了两个 5x5 的表格数据,一个是“要缓存的表格”,放置将要缓存的数据,另一个是“游戏中的表格”,在游戏中使用,每次游戏开始时,会将本地缓存的表格数据读取到“游戏中的表格”中。
这是要缓存的表格,第一行数据为 1 。
文章图片
这是游戏中的表格,所有数据都为 0 。
文章图片
下面,就实现一下这样的例子,先将“要缓存的表格”中的数据存到本地,然后,再通过读取本地的数据来设置“游戏中的表格”。
在游戏中放置两个按钮,点击“存储”时,会将“要缓存的表格”的数据存储到本地。点击“读取”时,会读取本地存储的数据到“游戏中的表格”中。
文章图片
首先,看一下“存储”按钮上的逻辑。
文章图片
很简单,点击后直接使用缓存积木块缓存整个表格的数据即可,这里我们将钥匙 KEY 命名为了“表格”。
再来看一下“读取”按钮上的逻辑。
文章图片
点击后,直接使用赋值积木块,将缓存表格中的值设置到“游戏中的表格”中。
下面,我们点击调试一下看看,“游戏中的表格”是否能够成功设置。
游戏运行后,先点击“存储”,将“要缓存的表格”数据存储在本地,然后再接着点击“读取”,读取数据到“游戏中的表格”。
文章图片
上图中你会发现,“游戏中的表格”并没有被设置(第一行不是 1),但是下方莫名其妙的出现了一个 undefined 变量,在这个变量中存储了我们本来要设置到“游戏中的表格”中的数据。
这可能是开发工具的问题,但是这证明我们无法直接将读取到的本地表格的数据直接设置到“游戏中的表格”中。
那么,如何解决这个问题呢?我们可以通过创建一个临时变量,先将读取到的本地表格数据存储在临时变量中,然后再通过循环逐个的将临时变量表格中的数据设置到“游戏中的表格”中。
先创建几个变量。
文章图片
如图,新建了三个变量,“临时变量”用于存储读取到的本地表格数据,“行号”和“列号”用于双重循环。
接着,再来看一下我们修改后的读取逻辑。
文章图片
再次调试一下,点击“读取”。
文章图片
这次“游戏中的表格”被正常设置了,“全局-临时变量”中也存储了我们读取的数据,整个过程是这样的,我们先将读取到的本地表格数据存储到“全局-临时变量”中,然后再通过循环,逐个的将“全局-临时变量”中的数据设置到“游戏中的表格”中。
这就是存储和读取表格数据的方案了,看起来有点儿绕,至少在官方出来更好用的方案之前,大家可以先使用这个去满足当前的需求。
列表的缓存和读取读取列表跟读取表格是一样的道理,也是先将读取到的内容存储到一个“临时变量”中,然后再通过循环将列表中的每个数据设置到“游戏中的列表”中。
列表的存储。
文章图片
列表的读取。
文章图片
对象的缓存和读取对象的缓存和读取也一样,不同的是对象无法使用循环进行遍历,只能去手动的设置每一个 key 的 value。
对象的存储。
文章图片
对象的读取。
文章图片
这一节的内容就到这里了,总结一下,首先我们讲了如何利用本地缓存来实现游戏中的声音设置的存储,接着讲了各种数据类型的本地缓存和读取操作。也许在未来,微信小游戏制作工具的官方会优化数据读取的操作,让其像数据存储操作一样的容易,只需要用一个积木块进行赋值即可。但是,在这之前,我们可以先使用这种稍微绕弯一点儿的方式来满足当前的需求。
我是会做游戏也会教你做游戏的小蚂蚁,想学习做游戏的话,关注我就对啦!欢迎关注公众号【小蚂蚁教你做游戏】,领取全网最全的微信小游戏开发原创教程资料。
【微信小游戏开发实战11:使用本地缓存】
推荐阅读
- 阿里巴巴笔试题 -- 动态规划实现两个字符串的最短编辑记录
- spring cloud alibaba gatewaynacos503错误代码
- python入门
- #yyds干货盘点#vue中mockjs的使用
- #yyds干货盘点# Java 内存分析之堆内存和MetaSpace内存
- 想从单体架构演进到分布式架构,SBA 会是一个不错的选择
- OpenStack Train(系统环境实施准备)
- netty系列之:使用Jboss Marshalling来序列化java对象
- 分布式配置中心服务端如何实时更新()