標籤:
對於個人或者小團隊來說,開發一個有網路功能的遊戲是一件不容易的事情,必須掌握一門諸如Java/.net/php這類的伺服器開發語言。
Bmob雲端服務方便了開發人員。Bmob可以給應用軟體快速添加一個安全靈活的後台管理系統,方便瀏覽終端儲存的各種資訊,讓開發人員們可以不需要關注伺服器後端的事情,只需要使用Bmob的Android/iOS/Cocos2d-x/Unity 等SDK就可以實現。
下面我們通過一個簡單的執行個體來瞭解一下bmob的使用。
1.在Bmob官網上註冊一個帳號。(Bmob官網:http://www.bmob.cn/)
2.下載csharp sdk. 裡面有三個檔案:unity,Windows和WindowsPhone8,我們需要的是Unity下的Bmob-Unity.dll,將該檔案放在項目中libs檔案夾下。
3.在應用面板建立一個應用,擷取該應用的密鑰(Application ID)。在資料瀏覽下,建立所需要的表以及欄位。(建立Score表,建立score和playerName兩個欄位)
4.將BmobUnity指令碼掛在到Camera上,Application Id粘過來。
5.建立與Score表相對應的Model模型:BmobGameObject:BmobTable,必須實現BmobTable介面。
using UnityEngine;using System.Collections;using cn.bmob.io;public class BmobGameObject : BmobTable{ //score、playerName是後台資料表對應的欄位名稱 public BmobInt score { get; set; } public string playerName { get; set; } //從資料表中讀取 public override void readFields(BmobInput input) { base.readFields(input); this.score = input.getInt("score"); this.playerName = input.getString("playerName"); } //寫入資料表 public override void write(BmobOutput output, bool all) { base.write(output, all); output.Put("score", this.score); output.Put("playerName", this.playerName); }}
6.測試
using UnityEngine;using System.Collections;using cn.bmob.api;using cn.bmob.io;using System.Collections.Generic;public class BmobTest : MonoBehaviour { private BmobUnity bmob; private string tableName; // Use this for initialization void Start () { bmob = this.GetComponent<BmobUnity>(); tableName="Score"; } // Update is called once per frame void Update () { #region 添加一行資料 Space if (Input.GetKeyDown(KeyCode.Space)) { //建立資料對象 var data = new BmobGameObject(); //設定值 System.Random rnd = new System.Random(); data.score = rnd.Next(0, 100); data.playerName = "player" + rnd.Next(1, 10); ; //添加一行資料,Score為建立的資料表名 bmob.Create(tableName, data, (resp, exception) => { if (exception != null) { print("儲存失敗, 失敗原因為: " + exception.Message); return; } print("儲存成功, @" + resp.createdAt); //resp.objectId }); } #endregion #region 擷取一行資料 A if (Input.GetKeyDown(KeyCode.A)) { string objectId = "d95534876e"; bmob.Get<BmobGameObject>(tableName, objectId, (resp, exception) => { if (exception != null) { print("查詢失敗, 失敗原因為: " + exception.Message); return; } BmobGameObject game = resp; print("擷取的對象為: " + game.ToString()); print("擷取對象的分數為:"+game.score.ToString()); }); } #endregion #region 修改一行資料 B if (Input.GetKeyDown(KeyCode.B)) { BmobGameObject game = new BmobGameObject(); game.playerName = "pn_123"; string objectId = "d95534876e"; bmob.Update(tableName, objectId, game, (resp, exception) => { if (exception != null) { print("修改失敗, 失敗原因為: " + exception.Message); return; } print("修改成功, @" + resp.updatedAt); }); } #endregion #region 刪除一行資料 D if (Input.GetKeyDown(KeyCode.D)) { string objectId = "d95534876e"; bmob.Delete(tableName, objectId, (resp, exception) => { if (exception != null) { print("刪除失敗, 失敗原因為: " + exception.Message); return; } print("刪除成功, @" + resp.msg); }); } #endregion #region 查詢所有資料 Q if (Input.GetKeyDown(KeyCode.Q)) { //建立一個BmobQuery查詢對象 BmobQuery query = new BmobQuery(); //查詢playerName欄位值為player1的記錄 query.WhereEqualTo("playerName", "player1"); // 預設情況下,系統實際上並不會返回所有的資料,而是預設返回10條資料記錄,你可以通過setLimit方法設定返回的記錄數量 //query.Limit("20"); query.Skip(20); //SQL中的條件查詢query.Where...來判斷 bmob.Find<BmobGameObject>(tableName, query, (resp, exception) => { if (exception != null) { print("查詢失敗, 失敗原因為: " + exception.Message); return; } //List<T>的命名空間System.Collections.Generic.IList<T> //對返回結果進行處理 List<BmobGameObject> list = resp.results; foreach (var game in list) { print("擷取的對象為: " + game.ToString()); } }); } #endregion }}
bmob後台資料如下:
Bmob—移動後端雲端服務平台