Unity NGO
最后更新于
这有帮助吗?
这有帮助吗?
下面是该通用未修改脚本(取自 Bolt 文档)的样子:
using System.Collections;
using System.Collections.Generic;
using Unity.BossRoom.ConnectionManagement;
using UnityEngine;
namespace Unity.Multiplayer.Samples.BossRoom
{
public class EdgegapServerStarter : MonoBehaviour
{
public string portMapName = "gameport";
// Start 在第一帧更新前被调用
// 用于初始化
{
if (Application.isBatchMode)
{
ConnectionManager connectionManager = GameObject.Find("ConnectionManager").GetComponent<ConnectionManager>();
string internalPortAsStr = Environment.GetEnvironmentVariable($"ARBITRIUM_PORT_{portMapName.ToUpper()}_INTERNAL");
if (internalPortAsStr == null || !ushort.TryParse(internalPortAsStr, out ushort port))
{
throw new Exception($"找不到端口映射,确保您的应用版本端口名称与 \"{portMapName}\" 匹配");
}
connectionManager.StartHostIp("服务器", "0.0.0.0", port);
}
}
}
}116 public override async Task SetupHostConnectionAsync()
117 {
118 //SetConnectionPayload(GetPlayerId(), m_PlayerName); // 也需要为主机设置连接负载,因为主机也是一个客户端
119 var utp = (UnityTransport)m_ConnectionManager.NetworkManager.NetworkConfig.NetworkTransport;
120 utp.SetConnectionData(m_Ipaddress, m_Port);
121 }66 async void StartHost()
67 {
...
72 // NGO 的 StartHost 启动所有内容
-- //if (!m_ConnectionManager.NetworkManager.StartHost())
73 if (!m_ConnectionManager.NetworkManager.StartServer())
74 {
75 StartHostFailed();
76 }
...112 public override void OnNetworkSpawn()
113 {
...
125 m_ServerCharacter.IsStealthy.OnValueChanged += OnStealthyChanged;
126 m_ServerCharacter.MovementStatus.OnValueChanged += OnMovementStatusChanged;
127 //OnMovementStatusChanged(MovementStatus.Normal, m_ServerCharacter.MovementStatus.Value);
...148 ConnectStatus GetConnectStatus(ConnectionPayload connectionPayload)
149 {
...
155 //if (connectionPayload.isDebug != Debug.isDebugBuild)
156 //{
157 // return ConnectStatus.IncompatibleBuildType;
158 //}
...