對於我的或者小團隊來講,開發一個有網絡功能的遊戲是一件不容易的事情,必須掌握一門諸如Java/.net/php這類的服務器開發語言。php
Bmob雲服務方便了開發者。Bmob能夠給應用軟件快速添加一個安全靈活的後臺管理系統,方便瀏覽終端保存的各類信息,讓開發者們能夠不須要關注服務器後端的事情,只須要使用Bmob的Android/iOS/Cocos2d-x/Unity 等SDK就能夠實現。後端
下面咱們經過一個簡單的實例來了解一下bmob的使用。api
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粘過來。dom
5.建立與Score表相對應的Model模型:BmobGameObject:BmobTable,必須實現BmobTable接口。ide
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後臺數據以下:this