隐藏 Airconsole 延迟
Hide Airconsole Latency
使用 Airconsole,按下按钮和在屏幕上看到结果之间存在明显的延迟。在有关 Airconsole available here, 的演示文稿中,提到您可以 "cheat" 根据来自客户端的时间戳进行回溯。
有 simple/built-in 使用 Unity 执行此操作的方法吗?我可以看到如何通过让服务器和客户端就共同的时间戳达成一致来做到这一点,但这似乎很棘手,我想知道有一种内置的方法可以做到这一点。
使用 getServerTime() 函数很简单。
在控制器上,您发送输入发生时的时间戳以及消息。在屏幕上,您将所述时间戳与当前的 GetServerTime() 进行比较,区别在于延迟。
控制器:
airconsole.message(AirConsole.SCREEN, {"action": "jump", "ts": airconsole.getServerTime()});
屏幕:
void OnMessage(int from, JToken data) {
if ((string)data ["action"] == "jump") {
long latency_ms = AirConsole.instance.GetServerTime () - (long)data ["ts"];
Debug.Log ("device " + from + " latency: " + latency_ms);
//Jump quicker depending on latency
}
}
使用 Airconsole,按下按钮和在屏幕上看到结果之间存在明显的延迟。在有关 Airconsole available here, 的演示文稿中,提到您可以 "cheat" 根据来自客户端的时间戳进行回溯。
有 simple/built-in 使用 Unity 执行此操作的方法吗?我可以看到如何通过让服务器和客户端就共同的时间戳达成一致来做到这一点,但这似乎很棘手,我想知道有一种内置的方法可以做到这一点。
使用 getServerTime() 函数很简单。
在控制器上,您发送输入发生时的时间戳以及消息。在屏幕上,您将所述时间戳与当前的 GetServerTime() 进行比较,区别在于延迟。
控制器:
airconsole.message(AirConsole.SCREEN, {"action": "jump", "ts": airconsole.getServerTime()});
屏幕:
void OnMessage(int from, JToken data) {
if ((string)data ["action"] == "jump") {
long latency_ms = AirConsole.instance.GetServerTime () - (long)data ["ts"];
Debug.Log ("device " + from + " latency: " + latency_ms);
//Jump quicker depending on latency
}
}