天天看點

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

上周在制作完闖關模式後,我有了在遊戲中做一個關卡編輯器的想法,讓玩家可以在遊戲中制作自己的關卡進行挑戰,甚至可以将自己制作的關卡與朋友進行分享。

原有的關卡編輯器是使用Unity做的,因為可以友善的進行檔案的讀取和寫入,可以将設計好的關卡資料寫入到檔案中,然後在将檔案中的資料導入到微信小遊戲開發工具中。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

現在我将這個關卡編輯做到了小遊戲中。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

關卡編輯器功能已經更新到最新版的精緻1010中了,歡迎大家前去體驗。

這篇文章主要分享一下關卡編輯器的制作思路,以及如何利用分享元件将自己制作的關卡分享給朋友玩。

上一節中我們講過,關卡模式中最重要的資料抽象就是将這個10 x 10 的網格轉化成一個長度為 100 的字元串,像是這樣:

0000000300200000000000021120000001001000000100100000010010000001001000000211200000000000000000000000

從網格的左下角開始,一行一行的向上周遊,這一大長串數字中的每一個數字就表示了一個方格中的狀态,0 表示目前方格是空的,1 表示目前方格中的障礙需要消除 1 次清除,3 表示目前方格中的障礙需要消除 3 次才能清除。

目前最大的障礙數設定為 5 ,因為據測試需要消除 5 次才能清除的障礙已經夠難了。

實作這樣一個的關卡編輯器我們需要借助一個表格變量,将其設定為 10 行 10 列。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

每一個表格變量中的數字就對應着關卡編輯器中的一個格子的狀态。

接着來看一下方塊的邏輯。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

并不複雜,每點選一次,就将自己的障礙次數增加 1 , 超過 5 的話就重置為 0,然後将障礙次數記錄在表格中的對應位置,最後再将表格資料進行本地緩存,使用本地緩存是為了記錄目前關卡的編輯,以便于在下次打開遊戲時能夠恢複之前編輯的狀态。(表格資料的本地緩存和讀取操作,可以參考一下​​這篇文章​​,詳細講解了各種類型資料的本地緩存和讀取的方法。)

當玩家想要試玩自己制作的關卡時,我們就直接使用這個表格中的内容對關卡進行設定即可。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

那麼如何将自己設計的關卡分享給朋友玩呢?

首先我們需要先了解幾塊與分享有關的積木塊。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

與分享有關的積木塊都在側邊欄的“小遊戲”中,前兩個積木塊分别為設定标題和圖檔,其中分享圖檔積木塊允許你分享從小程式背景上傳的圖檔。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

如圖,在小遊戲背景可以配置自定義轉發圖檔,這裡可以上傳自己想要分享的圖檔,稽核通過後,點選圖檔位址,能夠擷取到一個圖檔的連結,把連結放到“設定分享圖檔”的積木塊中,就可以設定想要分享的圖檔了。

這裡我們需要重點了解第 3 塊積木,即“設定分享參數”,我們需要利用它來在分享中增加一些資料,比如說我們的自制關卡的資料。

參數傳遞的格式是“名字=值”,等号前方是參數的名字,等号後是參數的值,對于精緻1010中的關卡資料來講,傳遞的參數就是這樣的:

diy=0000000300200000000000021120000001001000000100100000010010000001001000000211200000000000000000000000

參數的名字叫“diy”,參數的值為一個長度為 100 的關卡資料字元串。

來看一下分享的實作。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

将編輯的關卡資料轉換成字元串,然後設定到分享參數中,分享出去即可。

當朋友通過分享的連結打開進入遊戲時,通過判斷和分析分享參數,就可以去實作一些邏輯和功能了。

在小遊戲欄的最下方有一個“擷取分享參數”的積木,通過它就可以擷取到分享的參數了。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

在進入到遊戲的首場景啟動時,進行分享參數的判斷和設定。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

判斷是否有分享參數,如果有并且滿足要求的話,就将關卡資料的字元串設定到關卡編輯的表格中。如果沒有分享參數的話,就是正常進入遊戲。

這裡注意一下,“擷取分享參數”積木塊擷取到的參數格式是這樣的:

{ diy:10010212111 }      

很顯然這是一個對象的資料格式,是以這裡我們隻需要使用“擷取對象的值”這個積木塊提取出參數中對應的值即可。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

當有分享參數時,這裡我使用了一個提示。

微信小遊戲開發實戰14:關卡編輯器的制作以及關卡分享功能的實作

當點選挑戰時,我們要做就是打開關卡場景,然後根據編輯表格中的資料設定關卡的障礙即可,這樣朋友就能夠點選分享連結試玩你制作的遊戲關卡了。