包含此页的版本:
不含此页的版本:
您可以使用网络支持跨计算机网络进行多人游戏的 Unity 系统。更多信息
请参阅术语表通过以下方式在 Web 中:
Unity 支持 Web 中的 UnityWebRequest 类。为了实现 UnityWebRequest 类,Unity 使用 JavaScript Fetch API,该 API 使用浏览器来处理 Web 请求。这对访问跨域资源施加了安全限制。
如果您将 Web 请求发送到托管 Unity 内容的服务器以外的服务器,则要将其发送到的服务器必须授权 Unity 内容。
要访问Web中的跨域Web资源,您尝试访问的服务器需要使用跨域资源共享(CORS)来授权跨域Web资源。
如果您尝试使用 UnityWebRequest 访问内容,并且远程服务器未正确设置或配置 CORS,则浏览器控制台中会出现如下错误:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myserver.com/. This can be fixed by moving the resource to the same domain or enabling CORS.
服务器需要将 Access-Control 标头添加到它发送的 http 响应中,以指示哪些网页有权从 Web 浏览器读取该信息。
有关如何添加允许 Unity Web 从任何源访问 Web 服务器上的资源的 Access-Control 标头的演示,请参阅以下示例。此示例包括常见的请求标头,并允许 GET、POST 或 OPTIONS 方法:
"Access-Control-Allow-Credentials": "true",
"Access-Control-Allow-Headers": "Accept, X-Access-Token, X-Application-Name, X-Request-Sent-Time",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS",
"Access-Control-Allow-Origin": "*",
不要使用阻止 UnityWebRequest 下载的代码,例如:
while(!www.isDone) {}
Web 浏览器不允许同步阻止代码执行以等待网络传输。因此,如果您需要执行同步样式的 UnityWebRequest,请使用 Coroutine 和 yield 语句等待下载完成。更多信息,请参见使用 UnityWebRequest 的协程示例。
由于安全限制,Web 浏览器不允许直接访问 TCP 或 UDP 套接字。相反,您可以使用支持 Web 平台的 Unity Netcode 网络包。有关更多信息,请参阅文档关于 Netcode for GameObjects (Unity Multiplayer Networking)。
有关 Web 浏览器网络标准的更多信息,您可能需要探索以下内容:
Web 平台不支持一些网络功能。
您不能在 Web 平台中使用任何 .NET 网络类,因为 JavaScript 代码无法直接访问 Internet 协议 (IP) 套接字来实现网络连接。具体来说,Web 不支持System.NetNamespace。
由于浏览器中的安全限制,Web 平台不支持本机套接字访问。因此,Web 也不支持 UnityEngine.Ping (ICMP) 等功能。