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

Unity之Bmob云存储一的更多相关文章

  1. openstack-swift云存储部署(二)

    接上篇,swift-proxy和swift-store的安装 先说一下服务器分配 swift-proxy和keystone部署在192.168.25.11 swift-store是两台  分别是192 ...

  2. openstack-swift云存储部署(一)

    最近因为工作的需要搭建了一套swift云存储架构 我们先来解读一下里面的技术知识点:swift服务是属于openstack中的一种组件服务,openstack中的组件服务还有keystone.Nova ...

  3. phpcmsv9 阿里云OSS云存储整合教程

    该教程算不上是phpcmsv9阿里云oss插件,所以整个修改及其代码覆盖前请一定记得备份.还有一点就是后台发布文章时上传的附件还是会保存在你的服务器上,基于以下原因:1.个人的需求是前台页面需要使用t ...

  4. Microsoft Azure 云存储服务概念

    本文包括了以下几点内容: 什么是Azure云存储服务? 云存储服务分类 云存储服务的优势 什么是Azure云存储服务? Azure 云存储服务可以说是Azure 上最重要的SAAS服务了. 在Azur ...

  5. 自己搭建云存储(WIFI路由器上接硬盘)

    欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=49 http://www.cnet.com/how-to/share-an-extern ...

  6. java servlet手机app访问接口(三)高德地图云存储及检索

    这篇关于高德地图的随笔内容会多一点, 一.业务说明     对应APP业务中的成员有两类,一是服务人员,二是被服务人员,  主要实现功能, 对APP中的服务人员位置进行时时定位, 然后通过被服务人员登 ...

  7. ios每日一发--Leanclude数据云存储以及登录 注册账户

    利用LeanCloud来实现注册账号,存储账号以及,登录时查询账号是否正确.集成方式很简单可以看这里的官方文档.地址是这里: https://leancloud.cn/docs/ 在这里创建应用,以及 ...

  8. 云存储性能测试工具--COSBench安装

    COSBench安装 Cosbench是Intel的开源云存储性能测试软件,COSBench目前已经广泛使用与云存储测试,并作为云存储的基准测试工具使用 1 环境 1.1 操作系统 COSBench可 ...

  9. 自动备份SQL数据库到云存储Storage

    如何自动备份SQL数据库到Storage呢. 前提条件需要SQL Server2012 SP1 CU2或更高版本 1. 备份SQL Azure数据库到云存储Storage 1)在SQL Server ...

随机推荐

  1. CentOS7--DNS处理模块DnsPython的简单使用

    初步了解: DnsPython是Python实现的一个DNS工具包,支持几乎所有的记录类型. 安装: # wget http://www.dnspython.org/kits/1.9.4/dnspyt ...

  2. 用SNMP协议实现系统信息监控--Windows Server 2008

    简单了解: SNMP简单网络管理协议,是一种属于应有层的协议,主要有三个部分组成,被管理部分.代理部分和网络管理系统. 被管理部分是一个网络节点,也称为网络单元.SNMP代理是被管理设备上的一个网络管 ...

  3. JavaScript 对象 - 与属性的相关知识

    function inherit(p){ if(p == null) throw TypeError(); if(Object.create) return Object.create(p); var ...

  4. .net 调用Oracle.Data.Access 组件提供的用于批量操作的方法

    1.添加引用 using Oracle.DataAccess.Client; using System.Configuration; 2.代码 增加方法 //DestinationTableName ...

  5. hdu 2191多重背包

    悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  6. ORACLE 数据库概述

    1,发展史: 1978年,Orcale诞生 1982年,Orcale3推出了,它是第一个能够运行在大型机和小型机上的关系型数据库 1997年,Orcale公司推出了基于java语言的Orcale8,并 ...

  7. [C入门 - 游戏编程系列] 贪吃蛇篇(五) - 蛇实现

    因为已经写了食物的实现,所以我不知道到底是该先写世界的实现还是蛇的实现.因为世界就是一个窗口,可以立刻在世界中看到食物的样子,对于大多数人来说,如果写完代码立刻就能看到效果,那就再好不过了.可是,我最 ...

  8. 挖掘机控制器与复制其MCU程序

    最近的时间都浪费在两台小松PW128UU-1上面.旧的一台拆了变速箱,装上去以后就变得换挡不行了.新的一台一直都不行,弄过液压泵以后下部分的行走又出现一时正常一时不动的情况. 先说说概况:PW128U ...

  9. 类XX是公共的,应在名为XX.java的文件中声明public class XX

    找了一个程序粘贴到txt文档中,随便起个名为abc,然后改后缀为.java,接下来在dos中运行时出现以上错误 打开abc.java看了看,声明public class了,但是名字是粘贴过来的类名Wo ...

  10. spring的数据源基本配置

    aplictaionContext-dataSource的配置: <?xml version="1.0" encoding="utf-8"?> &l ...