Unity之Bmob雲存儲一


  無論我們做軟件還是做游戲,少不了的就是和數據打交道,對於要保存到本地的數據,我們可以采用的載體太多了。例如:txt,Xml,Sqlite,SqlServer,Mysql等等,具體使用什么那就視情況而定了。但是假如我們要在游戲中要做一個在線排行榜,我們會怎么解決呢?有些人立刻會想到把數據放到服務器上不就OK了!對的,我也是這么想的!實踐才是檢驗真理的唯一標准!廢話不多說,就是干!

1,首先介紹下Bmob雲。

  Bmob可以開發一個雲存儲的移動應用軟件,給應用軟件快速添加一個安全靈活的后台管理系統,方便瀏覽終端保存的各種信息。對於很多Android/ios/wp個人移動開發者來說,開發一個具有網絡功能的應用不是一件容易的事,不僅需要購買/租賃服務器,還必須掌握一門諸如Java/.net/php這類的服務器開發語言,還需要考慮服務器端的構建,這一切對於移動開發者來說,都是一個冗長的噩夢。但是在Bmob平台上,您只需注冊一個帳號,成功后申請創建任意多個數據庫,獲得對應的Key,下載對應版本的SDK並將其嵌入到移動應用中,便可以調用存取API,進行數據的任意操作。有了Bmob,您在3分鍾內就可以學會如何開發一個雲存儲的移動應用軟件,給應用軟件快速添加一個安全靈活的后台管理系統,方便您瀏覽終端保存的各種信息。不信的話可以嘗試下!幾乎查不到太多示例工程,自己摸索了兩天,分享下!

先進入官網去看看:http://www.bmob.cn/

1.1我們要做的第一步就是注冊用戶了,點擊注冊。

 

1.2 大家注冊好后,直接登錄就可以了!

1.3 創建應用並產生AppID號,這個在接下來的Unity 工程中可是個重角色。

1.4 我們先看看Bmob到底可以干嘛!

OK,我們目前關心的已經可以實現了!

2.1 打開Unity 建一個空的工程!

 

既然使用人家的服務器,肯定少了點什么沒有添加到工程里?對了,人家的SDK嘛!添加到工程即可,稍后會共享給大家的!准備工作就緒,可以代碼了!

2.2 創建一個簡單的腳本 TestBmob1.cs 和MyGameTable.cs

見名知意,測試腳本和數據實體類,我們需要在Bmob服務器上創建我們自定義的表!

接下來添加字段了:playername,score

添加完成,如下:

MyGametable.cs

using UnityEngine;
using System.Collections;
using cn.bmob.io;

public class MyGameTable : BmobTable
{
    /// <summary>
    /// Bmob服務器端我們定義的表名
    /// </summary>
    public const string TABLENAME = "MyGameTable";

    /// <summary>
    /// 玩家姓名
    /// </summary>
    public string playerName { get; set; }
    /// <summary>
    /// 玩家得分
    /// </summary>
    public BmobInt score { get; set; }

    /// <summary>
    /// 成員函數
    /// </summary>
    /// <param name="input"></param>
    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);
    }
}

 

TestBmob1.cs

 

using UnityEngine;
using System.Collections;
using cn.bmob.api;
using cn.bmob.tools;
using cn.bmob.io;
using testBmob;

public class TestBmob1 : MonoBehaviour
{
    private BmobUnity Bmob;

    // Use this for initialization
    void Start()
    {
        BmobDebug.Register(print);
        Bmob = gameObject.GetComponent<BmobUnity>();
    }

    void OnGUI()
    {
        if (GUILayout.Button("Insert"))
        {
            InsertData();
        }
        if (GUILayout.Button("GetData"))
        {
            getRecoard();
        }
        if (GUILayout.Button("Update"))
        {
            updateData();
        }
        if (GUILayout.Button("GetAllData"))
        {
            getAllInfo();
        }
        if (GUILayout.Button("刪除數據"))
        {
            deleteData();
        }
    }

    #region
    /// <summary>
    /// 插入數據
    /// </summary>
    public void InsertData()
    {
        MyGameTable mg = new MyGameTable();
        mg.score = 100;
        mg.playerName = "testBmob";

        Bmob.Create(MyGameTable.TABLENAME, mg, (resp, exception) =>
        {
            if (exception != null)
            {
                Debug.Log("保存失敗,原因: " + exception.Message);
            }
            else
            {
                Debug.Log("保存成功" + resp.createdAt);
            }
        });
    }
    /// <summary>
    /// 獲取表所以信息
    /// </summary>
    public void getAllInfo()
    {
        Bmob.Delete(MyGameTable.TABLENAME, "4d05c4cd58", (resp, exception) =>
        {
            if (exception != null)
            {
                Debug.Log("刪除失敗, 失敗原因為: " + exception.Message);
                return;
            }
            else
            {
                Debug.Log("刪除成功, @" + resp.msg);
            }
        });
    }
    /// <summary>
    /// 查詢數據
    /// </summary>
    public void getRecoard()
    {
        MyGameTable mg = new MyGameTable();

        Bmob.Get<MyGameTable>(MyGameTable.TABLENAME, "2TLe999G", (resp, exception) =>
        {
            if (exception != null)
            {
                Debug.Log("查詢失敗, 失敗原因為: " + exception.Message);
                return;
            }

            MyGameTable game = resp;
            Debug.Log(game.playerName + "," + game.score + "," + game.objectId);
            Debug.Log("獲取的對象為: " + game.ToString());
        });
    }
    /// <summary>
    /// 更新數據
    /// </summary>
    public void updateData()
    {
        MyGameTable game = new MyGameTable();
        game.playerName = "wuzhang";
        Bmob.Update(MyGameTable.TABLENAME, "4d05c4cd58", game, (resp, exception) =>
        {
            if (exception != null)
            {
                Debug.Log("保存失敗, 失敗原因為: " + exception.Message);
                return;
            }

            Debug.Log("保存成功, @" + resp.updatedAt);
        });
    }
    /// <summary>
    /// 刪除數據
    /// </summary>
    public void deleteData()
    {
        Bmob.Delete(MyGameTable.TABLENAME, "4d05c4cd58", (resp, exception) =>
        {
            if (exception != null)
            {
                Debug.Log("刪除失敗, 失敗原因為: " + exception.Message);
                return;
            }
            else
            {
                Debug.Log("刪除成功, @" + resp.msg);
            }
        });
    }
    #endregion
}

 2.3 將腳本掛載到MainCamera上運行下看看:

顯示插入數據成功了,還是不放心,看看后台數據庫吧?

插入數據OK了吧?其它增刪查改就簡單了!

查詢一下吧!

更新下數據playername改成樓主名字:wuzhang

刪除數據

好了,今天就學習到這里吧!大家可以先了解下Bmob也可以去官網上看看你API!

下次學點更有意思的:上傳文件,讀取文件,下載圖片,郵箱驗證功能等!

PS:重要的一點忘說了,AppID。

就用在這里,我們所有的操作都是基於AppID的,相當於是對你創建應用的唯一標識!

工程源碼鏈接:https://github.com/wuzhangwuzhang/Bmob


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM