目录
天地不仁 以万物为刍狗,大家好我是幻世界!今天介绍一个第三方的云数据库工具Bmob,这个工具主要用来存储玩家的账号数据和游戏数据,在弱联网的小游戏里面可以深度运用,维护成本极低。我们不用去部署一个完整的服务器及后端数据验证获取逻辑,只需要接入SDK运用构建好的api即可满足需求,来吧一起交流沟通吧。欢迎加入Unity业内qq交流群:956187480
一:创建第三方平台账号
Bmob平台为您的移动应用提供了一个完整的后端解决方案,我们提供轻量级的SDK开发包,让开发者以最小的配置和最简单的方式使用Bmob平台提供的服务,进而完全消除开发者编写服务器代码以及维护服务器的操作。
创建账号,下载对应版平台的SDK,新建应用

二:创建Unity工程
1.导入下载的sdk包
方式一:直接把bmob-unity-demo/Assets文件夹下的内容拖进unity工程即可,使用的是dll
方式二:直接把BmobSharp-master/core文件夹拖进unity即可,使用的是源码
https://github.com/bmob/BmobSharp
建议使用方式二可以了解源码逻辑,需要上传图片等信息的时候方式一有可能会出错。使用方式二的时候可能会提示BmobUnity
2.配置appID和key
把从平台上获取的新建应用的appid和key复制到BmobUnity脚本里面
新建场景HSJ,新建object,HelloBmob并添加脚本HelloBmob
三:编辑常用数据逻辑接口
HelloBmob脚本是官方写的示例我们可以参考使用。
每一个应用默认都有一个_User基础用户表,我们可以在此基础上增添删改用户,也可以新建其他类型的表,并通过增删改查等编辑目标表数据。BmobUser对象主要是针对应用中的用户功能而提供的,它对应着web端的User表,使用BmobUser对象可以很方便的在应用中实现用户的注册、登录、邮箱验证等功能,
1.数据对象模型
任何要操作的数据对象推荐继承自BmobTable类例如,游戏中可能会用到的分数对象GameScore,它可能包含score、playerName、cheatMode等属性,对应的数据对象模型的示例代码如下:
public class BmobGameObject : BmobTable
{
public BmobInt score { get; set; }
public String playerName { get; set; }
public BmobBoolean cheatMode { get; set; }
public override void readFields(BmobInput input)
{
base.readFields(input);
this.score = input.getInt("score");
this.cheatMode = input.getBoolean("cheatMode");
this.playerName = input.getString("playerName");
}
public override void write(BmobOutput output, Boolean all)
{
base.write(output, all);
output.Put("score", this.score);
output.Put("cheatMode", this.cheatMode);
output.Put("playerName", this.playerName);
}
}
2.添加表,添加用户数据
var data = new GameScore();
data.score = 25;
data.playerName = "幻世界";
data.cheatMode = false;
bmobUnity.Create(TABLENAME, data, (resp, exception) =>
{
if(exception != null){
print("保存失败, 失败原因为: " + exception.Message);
return;
}
print("保存成功, @" + resp.createdAt);
});
运行完以上代码后,数据即可保存到服务器端。为了确认数据是否真的已经保存成功,你可以在Bmob服务器端你应用程序的数据浏览项目中进行查看。你应该看到类似这样的结果:
objectId: "0c6db13c", score: 25, playerName: "bmob", cheatMode: false,createdAt:"2013-09-27 10:32:54", updatedAt:"2013-09-27 10:32:54"
这里需要注意几点:
- 在运行以上代码时,如果服务器端你创建的应用程序中已经存在GameScore数据表和相应的score、playerName、cheatMode字段,那么你此时添加的数据和数据类型也应该和服务器端的表结构一致,否则将保存数据失败。
- 如果服务器端不存在GameScore数据表,那么Bmob将根据你第一次(也就是运行的以上代码)保存的GameSocre对象在服务器为你创建此数据表并插入相应数据。
- 每个BmobTable对象都有几个默认的键(数据列)是不需要开发者指定的,objectId是每个保存成功数据的唯一标识符。createdAt和updatedAt代表每个对象(每条数据)在服务器上创建和最后修改的时间。ACL是数据的操作权限,这个在没有指定的情况下为空。这些键(数据列)的创建和数据内容是由服务器端自主来完成的。
3.查询数据
BmobUnity SDK提供了BmobQuery类,它提供了多样的方法来实现不同条件的查询,同时它的使用也是非常的简单和方便的。查看查询相关所有介绍
1.查询所有数据
2.查询单条数据
3.条件查询
4.分页查询
5.结果排序
6.统计对象数量
7.查询指定列
4.修改删除数据
更新一个对象也是非常简单。例如:将GameScore表中objectId为0c6db13c的游戏分数修改为77.
GameScore game = new GameScore();
game.score = 77;
bmobUnity.Update(TABLENAME, "68ee8131ca", game, (resp, exception) =>
{
if (exception != null)
{
print("修改失败, 失败原因为: " + exception.Message);
return;
}
print("修改成功, @" + resp.updatedAt);
});
从服务器删除对象。例如:将GameScore表中objectId为68ee8131ca的数据删除。
bmobUnity.Delete("GameScore", "68ee8131ca", (resp, exception) =>
{
if (exception != null)
{
print("删除失败, 失败原因为: " + exception.Message);
return;
}
print("删除成功, @" + resp.msg);
});
5.其他用法
参考: