统一启动我的 '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.

相反,您应该向用户提供三个选项

  1. 服务器
  2. 主机(服务器+客户端)
  3. 客户

使用 GUI 按钮或使用任何选项提供这些选项。您可以使用 Network Manager 启动应用程序的三种模式。

  1. StartHost: 这将启动网络 "host" - 同一应用程序中的服务器和客户端。
  2. StartClient: 这会启动一个网络客户端。它使用 networkAddress 和 networkPort 属性作为连接地址。
  3. StartServer: 这将启动一个新服务器。