正在阅读一些教程和统一文档,以了解如何将网络实例作为“主机”启动,但我能够找到的只是如何将系统初始化为客户端或服务器。我在下面添加了将在服务器或客户端模式下启动的代码,但是如何初始化主机模式呢?
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");
}
}
答案 0 :(得分:0)
实际上,当你在运行一个播放器时,你是一个普通的玩家。既不是服务器也不是客户。所以你这段代码没有任何意义。
if (host && !Network.isServer)
{
// setup server
LaunchServer();
return;
}
else if (!host && !Network.isClient)
{
// setup client
LaunchClient();
return;
}
isServer - 如果对象位于服务器(或主机)上,则为true 催生。
isClient - 如果对象位于客户端上,则为true,并由 服务器
相反,您应该为用户提供三个选项
使用GUI按钮或使用任何选项提供这些选项。您可以使用Network Manager启动应用程序的三种模式。