LeanCloud的使用

0.LeanCloud简介

a.比之前介绍的ApiCloud更合适Native开发者的云端服务器

b.官网的文档写的非常棒(暂时是我发现同类中最好的的文档)

c.看这篇文章之前推荐先看看我的另一篇文章:Unity中的回调函数,协程,基于任务的异步模式, 了解TAP如何使用.

d.这里只做最精简的总结,和列出Unity中的坑

e.官网:LeanCloud

1.在Unity中使用LeanCloud

(下载AVOSCloud.Unity.dll)

导入dll到Unity,引用命名空间

using AVOSCloud;

新建一个AVObject,数据格式如下

var gameScore = new AVObject("GameScore")
{
    { "score", 1338 },
    { "playerName", "Peter Burke" },
    { "cheatMode", false },
    { "skills", new List<string> { "FBI", "Agent Leader" } },
};

注册一个新用户

    void Singup(){
        var user = new AVUser ();
        user.Username = SystemInfo.deviceUniqueIdentifier;  //唯一识别码
        user.Password = SystemInfo.deviceUniqueIdentifier.Substring(2, 14);
        user["testA"] = "aaa";
        user.SignUpAsync ().ContinueWith (t => {
            if(t.IsFaulted || t.IsCanceled){
                Debug.Log(t.Exception.Message);
            } else {
                Debug.Log(t.Exception.Message);
                string uid = user.ObjectId;
            }
    });

登录已有用户

    void Login(){
        AVUser.LogInAsync (username, password).ContinueWith (t => {
            if(t.IsFaulted || t.IsCanceled){
                Debug.Log(t.Exception.Message);
            }
            else {
                string str = AVUser.CurrentUser.Get<string>("Username");
                Debug.Log(str);
            }

        });
    }

数据常用方法

    void Updata(){
        //updata data
        AVObject ao = AVUser.CurrentUser;
        ao["testA"] = "a5";

        //add remove
        ao.Add ("testB", "b1");
        ao.Remove("testA");

        //link focusType 使用链接对象
        AVObject sceneData = new AVObject("GirType");
        sceneData["typeName"] = "class1";
        ao ["SceneData"] = sceneData;

        //Async
        ao.SaveAsync ();


    }

链接对象的读取

    void LoadFoucsType(){
        //loadd focusType
        AVObject theSceneData = AVUser.CurrentUser.Get<AVObject> ("SceneData");
        Task<AVObject> fetchTask = theSceneData.FetchIfNeededAsync ();
        Debug.Log (theSceneData.Get<string> ("typeName"));
    }

需要注意,当从 LeanCloud 上读取某一对象的数据时,默认的 Fetch 方法不会加载与之相关联的对象的字段,只有执行以下代码后,这些关联数据字段(如上例中 theSceneData 的 typeName 字段)才会被实例化。

2.可能会遇到的坑

a.AVUser.Passward无法被识别,导致无法创建新用户

如果你用的是MonoDevelop而不是VC作为编辑器,恭喜你,你会遇到这个坑,解决方法:
a1.去Mono官网下载最新的Mono + GTK#
http://www.monodevelop.com/download/
a2.安装完成之后,在MonoDevelop中设置.Net版本为最新版
a3.MonoDevelop编辑器中还是会提示AVUser.Passward无法被识别,不管它,运行会成功的.

b. Task.Result无法被识别

解决方法:不管它,手动完整输完它,运行会成功的.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:http://gad.qq.com/program/translateview/7167991 英文版原...
    重装机霸阅读 3,985评论 1 84
  • 1、特殊文件夹(unity doc : Special Folders) Unity工程根目录下,有三个特殊文件夹...
    小飞不会飞_阅读 6,452评论 2 27
  • (十九) 黄土原上,过了小暑后,天气就成了几岁的娃娃脸,人们都是提心吊胆的,前一阵还在地里热火朝天的伺弄着庄稼,后...
    虚实先森阅读 256评论 0 7
  • 每到夜晚,人们灵魂就像千万只透明的茧在蠕动。生活的困窘在所有阴暗的角落,束缚无力。我打开窗子,用双手漏掉新鲜的雨
    蒙马特18区阅读 188评论 0 0
  • 有多久没有完完整整读一本书了 有多久没有好好写一篇文章了 有多久没有认真旅行了 …… 很久很久了吧 总是给自己找很...
    阿七_7阅读 510评论 0 0