在 unity/uLink 中延迟多个网络对象实例化的正确方法
本文关键字:实例化 对象 方法 网络 unity uLink 延迟 | 更新日期: 2023-09-27 18:32:12
我正在使用 UNITY 和 uLink 编写游戏。当播放器连接到权威服务器时,服务器上会调用一个回调函数,然后服务器循环并实例化客户端上的所有网络对象,例如 Instantiate(player,clientPrefab,proxyPreFab,serverPrefab...);有多个不同种类的对象。
然而,正在创建的每个网络对象都是CPU密集型的,尤其是在创建时,因此游戏在开始时几乎冻结了很长时间,甚至一分钟。
因此,我希望在创建所有对象之间有一个延迟,在创建其他对象之前给它们时间实例化,这样游戏就不会陷入困境。
所以问题是(我正在使用 C#)....
我认为 UNITY 是单线程的,所以当我在服务器上使用该功能时,当一个玩家连接执行网络实例之间的延迟时被调用,如果另一个玩家尝试连接会发生什么?它们是否会延迟很长时间,直到该功能竞争为一个玩家创建每个网络对象?
在为权威游戏创建网络对象之间,是在服务器上还是在客户端上创建延迟更好?
正确的方法是什么?
谢谢粗糙
您可以在执行
缓冲的 RPC 之前对其进行拦截,并控制是要立即执行还是稍后自行处理。您可以使用此功能在客户端的实例化之间创建延迟:
http://developer.muchdifferent.com/prevdevsite/api/ulink-1.5.8/
只要使用网络实例化,就不可能在服务器端创建延迟。
但是,考虑到实例化网络对象需要一分钟,我可能会开始考虑对象的数量以及它们是否需要首先联网。加上CPU密集型部分是否可以推迟到以后的时间。但这完全取决于您正在制作的游戏类型。