统一启动我的 'host' 网络模式应用
Starting my app for 'host' networking mode in unity
一直在阅读一些教程和统一文档以了解如何将网络实例作为 'host' 启动,但我所能找到的只是如何将系统初始化为客户端或一个服务器。我在下面附上了将在服务器或客户端模式下启动的代码,但是我该如何初始化主机模式?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class NetworkManager : MonoBehaviour {
public static NetworkManager Instance = null; // create singleton
public bool host;
private int hostPort = 7777;
private string hostIP = "192.168.1.160";
string networkConnections;
private void Awake()
{
InitNetworkManager();
}
private void Update()
{
if (Network.isServer)
{
networkConnections = NetworkServer.connections.Count.ToString();
}
}
void InitNetworkManager()
{
if (Instance == null)
Instance = this;
else if (Instance != null)
Destroy(gameObject);
if (host && !Network.isServer)
{
// setup server
LaunchServer();
return;
}
else if (!host && !Network.isClient)
{
// setup client
LaunchClient();
return;
}
}
void LaunchServer()
{
Network.InitializeServer(32, hostPort, true);
Debug.Log("Server Launched");
}
void LaunchClient()
{
Network.Connect(hostIP, hostPort);
Debug.Log("Client Launched");
}
}
实际上,当你是 运行 玩家时,你就是普通玩家。你既不是服务器也不是客户。所以你这段代码没有任何意义。
if (host && !Network.isServer)
{
// setup server
LaunchServer();
return;
}
else if (!host && !Network.isClient)
{
// setup client
LaunchClient();
return;
}
isServer - true if the object is on a server (or host) and has been
spawned.
isClient - true if the object is on a client, and was created by the
server.
相反,您应该向用户提供三个选项
- 服务器
- 主机(服务器+客户端)
- 客户
使用 GUI 按钮或使用任何选项提供这些选项。您可以使用 Network Manager 启动应用程序的三种模式。
- StartHost: 这将启动网络 "host" - 同一应用程序中的服务器和客户端。
- StartClient: 这会启动一个网络客户端。它使用 networkAddress 和 networkPort 属性作为连接地址。
- StartServer: 这将启动一个新服务器。
一直在阅读一些教程和统一文档以了解如何将网络实例作为 'host' 启动,但我所能找到的只是如何将系统初始化为客户端或一个服务器。我在下面附上了将在服务器或客户端模式下启动的代码,但是我该如何初始化主机模式?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class NetworkManager : MonoBehaviour {
public static NetworkManager Instance = null; // create singleton
public bool host;
private int hostPort = 7777;
private string hostIP = "192.168.1.160";
string networkConnections;
private void Awake()
{
InitNetworkManager();
}
private void Update()
{
if (Network.isServer)
{
networkConnections = NetworkServer.connections.Count.ToString();
}
}
void InitNetworkManager()
{
if (Instance == null)
Instance = this;
else if (Instance != null)
Destroy(gameObject);
if (host && !Network.isServer)
{
// setup server
LaunchServer();
return;
}
else if (!host && !Network.isClient)
{
// setup client
LaunchClient();
return;
}
}
void LaunchServer()
{
Network.InitializeServer(32, hostPort, true);
Debug.Log("Server Launched");
}
void LaunchClient()
{
Network.Connect(hostIP, hostPort);
Debug.Log("Client Launched");
}
}
实际上,当你是 运行 玩家时,你就是普通玩家。你既不是服务器也不是客户。所以你这段代码没有任何意义。
if (host && !Network.isServer)
{
// setup server
LaunchServer();
return;
}
else if (!host && !Network.isClient)
{
// setup client
LaunchClient();
return;
}
isServer - true if the object is on a server (or host) and has been spawned.
isClient - true if the object is on a client, and was created by the server.
相反,您应该向用户提供三个选项
- 服务器
- 主机(服务器+客户端)
- 客户
使用 GUI 按钮或使用任何选项提供这些选项。您可以使用 Network Manager 启动应用程序的三种模式。
- StartHost: 这将启动网络 "host" - 同一应用程序中的服务器和客户端。
- StartClient: 这会启动一个网络客户端。它使用 networkAddress 和 networkPort 属性作为连接地址。
- StartServer: 这将启动一个新服务器。