你好!
本人在使用user信息中的pointer过程遇到了如下疑问(unity2018版本,用新的c#sdk)
一、想达到的效果
(1)我在user表里增加了一列,属性是pointer,其实存的是一个LCObject


同时,我发现user列中存的其实是这个object的id

(2)我想每次玩家的信息变化后去更新这个属性值,但是想达到的效果是更新原来那一条记录,而不是新增一条。
目前,当我给user表的这个列赋值的时候它都会在LCObject下新增一条新的数据并关联新的id

二、想请教
(1)这种在user表中关联了一个LCObject的情况下,如果我只想更新最初绑定的那个id的信息,而不是新增该如何操作?
(2)我有想过去取到这个id,然后到LCObject里去更新。但是,当我获取user表的属性的时候,获取到的似乎是一个拼凑好的信息,还未找到直接获取id的方法,不知道我这种思路是否正确,如果正确我该如何取到id呢?

得到的结果

这个问题我尝试了好多次,请帮帮我,谢谢!

Pointer 可以认为是一个指针或引用,如果你只是想修改 PlayerInfo 对象的属性,只修要修改 PlayerInfo 对象即可(指针不变),如:

PlayerInfo playerInfo = user["playerInfo"];
playerInfo.xx = yy;
await playerInfo.Save();

这个问题请参考 CSharp-SDK-Unity-Demo1,在这个 demo 中,我们预先定义了「一个账号下有一个英雄角色,英雄角色有一个名字」,可以将 demo 中的 Hero 类比于你的 PlayerInfo。

这个正是一个 LCObject 的索引(指针),标记了类名和 id,可以定位到对应的数据(PlayerInfo)。
也可以通过 await user.Fetch(includes: new string[] { "playerInfo" }); 拉取到完整的 PlayerInfo 数据,参考5

收到,谢谢您的指导!

另,熟悉过程中我发现一个时间的问题:
我们在user属性的索引返回的时间,与实际后台存的creatat和updateat时间不一致。

实际后台存的是5月31日具体某个时间点的信息。

createdAt 和 updatedAt 是由服务端生成的时间
如果只是本地的 LCObject(没有保存过),则是 DateTime 的默认值