Unity云服务器与云存储解决方案

无论我们做软件还是做游戏,少不了的就是和数据打交道,对于要保存到本地的数据,我们可以采用的载体太多了。例如: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/

unity云服务器 unity 云存储_应用软件

1.1我们要做的第一步就是注册用户了,点击注册。

unity云服务器 unity 云存储_Unity Bmob 云存储_02

unity云服务器 unity 云存储_Unity Bmob 云存储_03

1.2 大家注册好后,直接登录就可以了!

unity云服务器 unity 云存储_Unity Bmob 云存储_04

1.3 创建应用并产生AppID号,这个在接下来的Unity 工程中可是个重角色。

unity云服务器 unity 云存储_服务器_05

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

unity云服务器 unity 云存储_Unity Bmob 云存储_06

OK,我们目前关心的已经可以实现了!

2.1 打开Unity 建一个空的工程!

unity云服务器 unity 云存储_应用软件_07

既然使用人家的服务器,肯定少了点什么没有添加到工程里?对了,人家的SDK嘛!添加到工程即可,稍后会共享给大家的!准备工作就绪,可以代码了!

2.2 创建一个简单的脚本 TestBmob1.cs 和MyGameTable.cs

见名知意,测试脚本和数据实体类,我们需要在Bmob服务器上创建我们自定义的表!

unity云服务器 unity 云存储_Unity Bmob 云存储_08

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

unity云服务器 unity 云存储_应用软件_09

添加完成,如下:

unity云服务器 unity 云存储_服务器_10

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上运行下看看:

unity云服务器 unity 云存储_Unity Bmob 云存储_11

显示插入数据成功了,还是不放心,看看后台数据库吧?

unity云服务器 unity 云存储_应用软件_12

插入数据OK了吧?其它增删查改就简单了!

查询一下吧!

unity云服务器 unity 云存储_unity云服务器_13

更新下数据playername改成楼主名字:wuzhang

unity云服务器 unity 云存储_unity云服务器_14

删除数据

unity云服务器 unity 云存储_unity云服务器_15

好了,今天就学习到这里吧!大家可以先了解下Bmob也可以去官网上看看你API!

下次学点更有意思的:上传文件,读取文件,下载图片,邮箱验证功能等!

PS:重要的一点忘说了,AppID。

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空