0

使用 Airconsole,在按下按钮和在屏幕上看到结果之间存在明显的延迟。在此处提供的有关 Airconsole 的演示文稿中,提到您可以通过基于来自客户端的时间戳进行回溯来“作弊”。

有没有一种简单/内置的方法可以用 Unity 做到这一点?我可以通过让服务器和客户端就相互的时间戳达成一致来了解如何做到这一点,但这似乎很棘手,我想知道有一种内置的方法可以做到这一点。

4

1 回答 1

1

使用 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

    } 

}
于 2016-01-31T10:12:02.560 回答