0.LeanCloud簡介
a.比之前介紹的ApiCloud更合適Native開發(fā)者的云端服務(wù)器
b.官網(wǎng)的文檔寫的非常棒(暫時是我發(fā)現(xiàn)同類中最好的的文檔)
c.看這篇文章之前推薦先看看我的另一篇文章:Unity中的回調(diào)函數(shù),協(xié)程,基于任務(wù)的異步模式, 了解TAP如何使用.
d.這里只做最精簡的總結(jié),和列出Unity中的坑
e.官網(wǎng):LeanCloud
1.在Unity中使用LeanCloud
導入dll到Unity,引用命名空間
using AVOSCloud;
新建一個AVObject,數(shù)據(jù)格式如下
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);
}
});
}
數(shù)據(jù)常用方法
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 上讀取某一對象的數(shù)據(jù)時突梦,默認的 Fetch 方法不會加載與之相關(guān)聯(lián)的對象的字段姆怪,只有執(zhí)行以下代碼后顶瞒,這些關(guān)聯(lián)數(shù)據(jù)字段(如上例中 theSceneData 的 typeName 字段)才會被實例化铺厨。
2.可能會遇到的坑
a.AVUser.Passward無法被識別,導致無法創(chuàng)建新用戶
如果你用的是MonoDevelop而不是VC作為編輯器,恭喜你,你會遇到這個坑,解決方法:
a1.去Mono官網(wǎng)下載最新的Mono + GTK#
http://www.monodevelop.com/download/
a2.安裝完成之后,在MonoDevelop中設(shè)置.Net版本為最新版
a3.MonoDevelop編輯器中還是會提示AVUser.Passward無法被識別,不管它,運行會成功的.
b. Task.Result無法被識別
解決方法:不管它,手動完整輸完它,運行會成功的.