HLAPI
您无需付费即可使用 Unity 。只需不要使用 Unity 配对 API,您就无需支付任何费用。
您可以让另一个播放器直接连接到不在同一本地网络上的另一个播放器,但您需要在每台计算机上执行端口转发。玩家可以通过他们的路由器设置执行端口转发,但您不希望您的玩家通过此操作。您可以从 C# 脚本进行端口转发,但如果您对网络一无所知,这会很复杂。有许多 C# 库可以做到这一点,因此您必须重新发明轮子。
一旦端口转发工作正常,您就可以使用Unity 标准 API直接连接到另一个网络中的另一个播放器。
如果您想更进一步,您可以编写一个脚本,将玩家的 IP 地址和端口号发送到您的服务器,以便玩家可以自动相互连接,而无需手动输入 IP 地址和端口号每台计算机的。
编辑:
unity matchmaking API = 里面的所有类UnityEngine.Networking.Match
,比如NetworkMatch
Unity 标准 API =NetworkServer
和 NetworkClient
您不应该使用NetworkManager
它,因为它的大部分功能都依赖于Unity 匹配 API。
要创建一个没有 Unity 匹配 API 的网络游戏,您只需要NetworkServer
和NetworkClient
类。
创建服务器:
NetworkServer.Listen
它具有重载方法,例如
public static bool Listen(string ipAddress, int serverPort);
public static bool Listen(int serverPort);
创建客户端(连接到服务器):
NetworkClient.Connect
public void Connect(string serverIp, int serverPort);
如果您不想使用 Unity 匹配 API,您将失去创建和加入游戏等功能。您可以使用我上面提到的NetworkServer
和创建一个完整的网络游戏。NetworkClient
只需创建一个服务器,连接到它并开始发送和接收信息。这是值得的,因为当 Unity 的服务器出现故障或开始变慢时,您的游戏仍会与其他游戏不同。
注意:Unity 正在开发可让您托管自己的游戏的应用程序。这还没有出来,但是当他们发布它时,您将能够通过在您的服务器上运行该应用程序来托管您自己的游戏而无需 Unity 的服务器。现在,他们希望您付费使用他们的一些网络代码,但真正的编码人员不必这样做。