文档

​
​

Development

User Acquisition

Monetization

工业

Multiplayer Services SDK

All Services

Multiplayer Services SDK

此页面不支持所选语言。
Multiplayer
​
​
Multiplayer Services SDK
  • Overview
  • Get started
  • Use multiplayer sessions
  • Manage sessions
  • Connect players through a relay
  • Networking
    • Ports and protocols
    • Locations and regions
    • Quality of service
    • Scaling
    • DTLS encryption
    • Advanced configuration
  • Matchmaking
  • Monitor and debug sessions
  • Tutorials
  • Reference
  1. Multiplayer Services SDK

Quality of service

Use Quality of Service (QoS) measurements to automatically select the best Relay region for your players.
阅读时间1 分钟
最后更新于 2 个月前

注意
QoS currently doesn't work if you're using Relay with WebSockets/WebGL.
Relay’s quality of service (QoS) feature allows you to select a region automatically based on quality of service data by starting the NetworkDriver as a host player without selecting a target region.
Creating an allocation request without specifying a region triggers the allocations service to use quality of service data to select the best available region based on the quality of the connection between each region and the host. Relay considers both latency and packet loss.
The following code is an example of how to create an allocation request:
private async Task<string> StartRelayServer(){ // Initialize UGS and authenticate if not already signed in await UnityServices.InitializeAsync(); if (!AuthenticationService.Instance.IsSignedIn) { await AuthenticationService.Instance.SignInAnonymouslyAsync(); } // Request an allocation to the Relay service var relayMaxPlayers = 5; Allocation allocation; try { allocation = await RelayService.Instance.CreateAllocationAsync(relayMaxPlayers); } catch (Exception e) { Debug.LogError($"Create allocation request failed: {e.Message}"); return null; } // Request the join code to share with clients string joinCode; try { joinCode = await RelayService.Instance.GetJoinCodeAsync(allocation.AllocationId); } catch (Exception e) { Debug.LogError($"Create join code request failed: {e.Message}"); return null; } // Configure the transport with Relay server data using AllocationUtils NetworkManager.Singleton.GetComponent<UnityTransport>() .SetRelayServerData(AllocationUtils.ToRelayServerData(allocation, "dtls")); // Start the host (or use StartServer() for a dedicated server) return NetworkManager.Singleton.StartHost() ? joinCode : null;}

Copyright © 2026 Unity Technologies
法律信息隐私政策CookiesDocumentation Terms of Use请勿出售或分享我的个人信息您的隐私选择(Cookie 设置)

“Unity”、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属公司在美国和其他地方的商标或注册商标(此处查看更多信息)。其他名称或品牌是其各自所有者的商标。

为方便起见,一些页面是机器翻译的,可能包含不准确的内容。如有信息不一致的情况,以英文版本为准。


    报告此页面的问题