天天看點

微信小遊戲開發實戰11:使用本地緩存

本地緩存就是将資料存儲在玩家的手機上,例如玩家的得分或者關卡存檔,這樣當下次打開遊戲時,就可以通過讀取已經的存儲在本地的資料,對遊戲中的内容進行設定。

在“精緻1010”遊戲中,我使用了本地緩存的功能,将玩家的聲音和振感設定進行了緩存,這樣當玩家下次進入到遊戲時,就會恢複之前的設定。

下面,就就讓我們來看一下,如何實作這個緩存設定的功能。

首先,需要添加“本地緩存”的插件。點選功能區的“添加插件”按鈕。

微信小遊戲開發實戰11:使用本地緩存

在彈出的“管理插件”對話框中,打開“本地緩存”插件。

微信小遊戲開發實戰11:使用本地緩存

打開後,回到積木區的“插件”中,就能夠看到與本地緩存有關的積木了。

微信小遊戲開發實戰11:使用本地緩存

簡單解釋一下這些積木塊的意思。

  • 設定緩存 KEY 的值為 VALUE : 将某個值 value 存儲在本地,并且為它設定一把鑰匙 key,通過這個鑰匙 key,就能夠找到這個存儲在本地的值 value。鑰匙和值是一一對應的關系,就是說每把鑰匙對應一個唯一的值。是以,當你需要存儲多個值時,就需要對應的設定多把鑰匙才行。
  • 删除緩存 KEY 的值:删除掉本地存儲的鑰匙 key ,以及其對應的值 value。
  • 清空全部存儲值:删除掉本地存儲的所有的鑰匙 key ,以及對應的值 value。
  • 擷取緩存 KEY 的值:通過唯一的鑰匙 key ,拿到那個與它對應的值。
  • 緩存 KEY 是否存在:判斷是否存在鑰匙 key,如果鑰匙不存在的話,也就意味着也不存在本地存儲的值了。

接着我們直接看一下控制聲音設定的積木塊。

微信小遊戲開發實戰11:使用本地緩存

我們設定了一把叫做“聲音”的鑰匙 key,然後為其設定了一個用于判斷聲音是否開關的值 value,這個值隻有兩個狀态,0 表示聲音關,1 表示聲音開。

在遊戲啟動後,首先去判斷“聲音”的鑰匙 key 是否存在,存在的話,就讀取一下這個本地的值,将它設定到全局變量“全局-聲音”中,然後根據這個全局變量來設定聲音按鈕上顯示的文字。

當聲音設定的按鈕被點選時,通過全局變量“全局-聲音”來判斷目前的聲音是開還是關,如果開着的話,就将其關閉,反之,就将其打開。最後再将設定後的全局變量“全局-聲音”的值存儲到本地。

這樣就實作了一個聲音按鈕控制,并且會将玩家的設定儲存到本地,這樣下次打開遊戲後,就會還原到先前的設定了。

微信小遊戲開發實戰11:使用本地緩存

除了緩存像 0,1,2 這樣的整數,也可以緩存文字,例如“我是一段要緩存的文字”,另外,也可以将資料中的清單,表格,對象進行緩存,下面,就講一下其它資料的緩存和讀取的方法。

表格的緩存和讀取

假設我們要緩存一個 5x5 的表格。

微信小遊戲開發實戰11:使用本地緩存

如圖,我們建立了兩個 5x5 的表格資料,一個是“要緩存的表格”,放置将要緩存的資料,另一個是“遊戲中的表格”,在遊戲中使用,每次遊戲開始時,會将本地緩存的表格資料讀取到“遊戲中的表格”中。

這是要緩存的表格,第一行資料為 1 。

微信小遊戲開發實戰11:使用本地緩存

這是遊戲中的表格,所有資料都為 0 。

微信小遊戲開發實戰11:使用本地緩存

下面,就實作一下這樣的例子,先将“要緩存的表格”中的資料存到本地,然後,再通過讀取本地的資料來設定“遊戲中的表格”。

在遊戲中放置兩個按鈕,點選“存儲”時,會将“要緩存的表格”的資料存儲到本地。點選“讀取”時,會讀取本地存儲的資料到“遊戲中的表格”中。

微信小遊戲開發實戰11:使用本地緩存

首先,看一下“存儲”按鈕上的邏輯。

微信小遊戲開發實戰11:使用本地緩存

很簡單,點選後直接使用緩存積木塊緩存整個表格的資料即可,這裡我們将鑰匙 KEY 命名為了“表格”。

再來看一下“讀取”按鈕上的邏輯。

微信小遊戲開發實戰11:使用本地緩存

點選後,直接使用指派積木塊,将緩存表格中的值設定到“遊戲中的表格”中。

下面,我們點選調試一下看看,“遊戲中的表格”是否能夠成功設定。

遊戲運作後,先點選“存儲”,将“要緩存的表格”資料存儲在本地,然後再接着點選“讀取”,讀取資料到“遊戲中的表格”。

微信小遊戲開發實戰11:使用本地緩存

上圖中你會發現,“遊戲中的表格”并沒有被設定(第一行不是 1),但是下方莫名其妙的出現了一個 undefined 變量,在這個變量中存儲了我們本來要設定到“遊戲中的表格”中的資料。

這可能是開發工具的問題,但是這證明我們無法直接将讀取到的本地表格的資料直接設定到“遊戲中的表格”中。

那麼,如何解決這個問題呢?我們可以通過建立一個臨時變量,先将讀取到的本地表格資料存儲在臨時變量中,然後再通過循環逐個的将臨時變量表格中的資料設定到“遊戲中的表格”中。

先建立幾個變量。

微信小遊戲開發實戰11:使用本地緩存

如圖,建立了三個變量,“臨時變量”用于存儲讀取到的本地表格資料,“行号”和“列号”用于雙重循環。

接着,再來看一下我們修改後的讀取邏輯。

微信小遊戲開發實戰11:使用本地緩存

再次調試一下,點選“讀取”。

微信小遊戲開發實戰11:使用本地緩存

這次“遊戲中的表格”被正常設定了,“全局-臨時變量”中也存儲了我們讀取的資料,整個過程是這樣的,我們先将讀取到的本地表格資料存儲到“全局-臨時變量”中,然後再通過循環,逐個的将“全局-臨時變量”中的資料設定到“遊戲中的表格”中。

這就是存儲和讀取表格資料的方案了,看起來有點兒繞,至少在官方出來更好用的方案之前,大家可以先使用這個去滿足目前的需求。

清單的緩存和讀取

讀取清單跟讀取表格是一樣的道理,也是先将讀取到的内容存儲到一個“臨時變量”中,然後再通過循環将清單中的每個資料設定到“遊戲中的清單”中。

清單的存儲。

微信小遊戲開發實戰11:使用本地緩存

清單的讀取。

微信小遊戲開發實戰11:使用本地緩存

對象的緩存和讀取

對象的緩存和讀取也一樣,不同的是對象無法使用循環進行周遊,隻能去手動的設定每一個 key 的 value。

對象的存儲。

微信小遊戲開發實戰11:使用本地緩存

對象的讀取。

微信小遊戲開發實戰11:使用本地緩存

繼續閱讀