Bmob—移動後端雲服務平臺

對於我的或者小團隊來講,開發一個有網絡功能的遊戲是一件不容易的事情,必須掌握一門諸如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

相關文章
相關標籤/搜索