在 unity/uLink 中延迟多个网络对象实例化的正确方法

本文关键字:实例化 对象 方法 网络 unity uLink 延迟 | 更新日期: 2023-09-27 18:32:12

我正在使用 UNITY 和 uLink 编写游戏。当播放器连接到权威服务器时,服务器上会调用一个回调函数,然后服务器循环并实例化客户端上的所有网络对象,例如 Instantiate(player,clientPrefab,proxyPreFab,serverPrefab...);有多个不同种类的对象。

然而,正在创建的每个网络对象都是CPU密集型的,尤其是在创建时,因此游戏在开始时几乎冻结了很长时间,甚至一分钟。

因此,我希望在创建

所有对象之间有一个延迟,在创建其他对象之前给它们时间实例化,这样游戏就不会陷入困境。

所以问题是(我正在使用 C#)....

  1. 我认为 UNITY 是单线程的,所以当我在服务器上使用该功能时,当一个玩家连接执行网络实例之间的延迟时被调用,如果另一个玩家尝试连接会发生什么?它们是否会延迟很长时间,直到该功能竞争为一个玩家创建每个网络对象?

  2. 为权威游戏创建网络对象之间,是在服务器上还是在客户端上创建延迟更好?

  3. 正确的方法是什么?

谢谢粗糙

在 unity/uLink 中延迟多个网络对象实例化的正确方法

您可以在执行

缓冲的 RPC 之前对其进行拦截,并控制是要立即执行还是稍后自行处理。您可以使用此功能在客户端的实例化之间创建延迟:

http://developer.muchdifferent.com/prevdevsite/api/ulink-1.5.8/

只要使用网络实例化,就不可能在服务器端创建延迟。

但是,考虑到实例化网络对象需要一分钟,我可能会开始考虑对象的数量以及它们是否需要首先联网。加上CPU密集型部分是否可以推迟到以后的时间。但这完全取决于您正在制作的游戏类型。