问题描述
最近使用 MatchVS 实现联网功能。MatchVS是一个游戏的 SDK ,延迟还是较小的。但是在调用 SDK 时发现下面问题:
MatchVS 收到信息的回调函数为 static 类型的,不能调用非 static 类型的函数或变量。因此不能调用 GameObject.Find 或者 Action,也无法通过 public GameObject 手动绑定来调用函数。
解决方法
于是无奈之下,只能想出一种解决方案,设置两个 static 类型的变量,可以在回调函数中改变他们的值;而在 update 中监视它们的变化。如下代码所示:
public static MsMsgNotify tRsp;
public static bool flag = false; //判断是否改变
void Update()
{
if(flag)
{
flag = false;
fun(tRsp); //处理函数
}
}
public void getInfo(MsMsgNotify tRsp1)
{
if (tRsp1.srcUserID != GameManager.userID) //判断是不是自己发出的
{
tRsp = tRsp1;
Debug.Log("getInfo");
flag = true;
}
else
Debug.Log("getMyInfo");
}
果然,只有用魔法才能打败魔法。