项目需要使用联网云锚点,但Google的不可用,曲线救国,就使用这种Game联网服务来做吧!
说明
首先 MatchVS 涉及到房间、匹配等逻辑。这些逻辑在给的示例里都有写好的部分,之后会研究的。这几天主要研究的是房间内部不同客户端之间的通信。
给的 Demo 里面只有一个 Scene,很多东西都是预制体。没有找到它预制体怎么实例化的,目前直接更改预制体。
重要函数
首先需要增加命名空间
using LitJson;
using MatchVS;
SendEvent
这个函数是自己写的,作用是向所有人发送位置信息。
public void updatePos(float x, float y, float z)
{
JsonData data = new JsonData();
data["action"] = "pos"; //根据action判断是什么动作,pos表示更改位置
data["x"] = x;
data["y"] = y;
data["z"] = z;
string value = data.ToJson();
GameManager.SendEvent(value, new int[] { GameManager.userID });
}
重要是将信息转化为 Json 串再转化为 string 串,并调用 GameManager.SendEvent 函数发送出去。
OnSendEventNotify
这个是接受信息的函数。不需要绑定之类的。目前作用是根据传递来的位置更改当前客户端物体的位置。
private void OnSendEventNotify(MsMsgNotify tRsp)
{
Debug.Log("EventNotify");
string payload = tRsp.cpProto;
JsonData data = JsonUtil.toObject(payload);
string action = (string)data["action"];
if (action.Equals("pos")) //根据action判断是什么动作,应该对应什么操作
{
float x = (float)data["x"];
float y = (float)data["y"];
float z = (float)data["z"];
//Debug.Log("x:" + x + " y:" + y + " z:" + z);
this.transform.position = new Vector3(x, y, z);
}
}
遇到的困难
- 目前还没能在手机上跑出来,所有测试都是在Windows系统上的。
- 跟联网相关的项目,每次运行之后再次运行或关闭软件都会卡死,所以测试的时候很浪费时间。
- 房间机制没有吃透,给的示例里是三个人才会开始。之后需要继续向前挖掘。