微信小游戏开发实战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。


对象的存储。


对象的读取。


这一节的内容就到这里了,总结一下,首先我们讲了如何利用本地缓存来实现游戏中的声音设置的存储,接着讲了各种数据类型的本地缓存和读取操作。也许在未来,微信小游戏制作工具的官方会优化数据读取的操作,让其像数据存储操作一样的容易,只需要用一个积木块进行赋值即可。但是,在这之前,我们可以先使用这种稍微绕弯一点儿的方式来满足当前的需求。


欢迎关注我的公众号,了解更多与游戏开发有关的教程和内容,如果你有对游戏开发感兴趣的朋友,也欢迎把这个系列文章推荐给他。

相关文章
|
存储 缓存 NoSQL
Redis专题-实战篇二-商户查询缓存
本文介绍了缓存的基本概念、应用场景及实现方式,涵盖Redis缓存设计、缓存更新策略、缓存穿透问题及其解决方案。重点讲解了缓存空对象与布隆过滤器的使用,并通过代码示例演示了商铺查询的缓存优化实践。
469 1
Redis专题-实战篇二-商户查询缓存
|
11月前
|
缓存 并行计算 监控
vLLM 性能优化实战:批处理、量化与缓存配置方案
本文深入解析vLLM高性能部署实践,揭秘如何通过continuous batching、PagedAttention与前缀缓存提升吞吐;详解批处理、量化、并发参数调优,助力实现高TPS与低延迟平衡,真正发挥vLLM生产级潜力。
2710 0
vLLM 性能优化实战:批处理、量化与缓存配置方案
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
2753 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
681 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
1907 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
存储 缓存 安全
Go语言实战案例-LRU缓存机制模拟
本文介绍了使用Go语言实现LRU缓存机制的方法。LRU(最近最少使用)是一种常见缓存淘汰策略,当缓存满时,优先删除最近最少使用的数据。实现中使用哈希表和双向链表结合的方式,确保Get和Put操作均在O(1)时间内完成。适用于Web缓存、数据库查询优化等场景。
|
小程序 Java 关系型数据库
weixin163基于微信小程序的校园二手交易平台系统设计与开发ssm(文档+源码)_kaic
本文介绍了一款基于微信小程序的校园二手物品交易平台的开发与实现。该平台采用Java语言开发服务端,使用MySQL数据库进行数据存储,前端以微信小程序为载体,支持管理员和学生两种角色操作。管理员可管理用户、商品分类及信息、交易记录等,而学生则能注册登录、发布购买商品、参与交流论坛等。系统设计注重交互性和安全性,通过SSM框架优化开发流程,确保高效稳定运行,满足用户便捷交易的需求,推动校园资源共享与循环利用。