Choose your operating system:
Windows
macOS
Linux
复制 actor 是一件耗费时间的工作。引擎会尽量让这个过程变得更有效率,但您也可以做一些额外的工作来简化这个过程。
在收集 actor 用于复制时,服务器将检查一些事项,如相关性、更新频度、休眠情况等。您可以调整这些检查项以改善性能。要最大限度提升这一过程的效率,最好是遵循以下优先顺序:
关闭复制(
AActor::SetReplicates( false )
)当 actor 未进行复制时,它最初不会出现在列表中,我们可以充分利用这一点,确保那些无需复制的 actor 会有相应标记。
减少 NetUpdateFrequency 值
actor 的更新次数越少,更新所用的时间就越短。最好是尽量压低这个数值。该数值代表了这个 actor 每秒复制到客户端的频度。
休眠情况
相关性
NetClientTicksPerSecond
如果属性并非是绝对必需,则不要将其标记为复制。如果可以,最好能尝试从现有的已复制属性中派生状态。
尝试利用已有的量化函数,如 FVector_NetQuantize
。这样能大大减少向客户端复制此状态时所需的大小,如果使用得当,就不会导致任何明显的偏差。
FName
一般不会被压缩,所以在使用它们作为 RPC 的参数时,请记住它们通常会向字符串发送所有调用。这会产生很大的资源消耗。