Unity mirror实现多人同时在线(LINUX)保姆级

话不多说直接开始

1 申请服务器(阿里云/腾讯云)

笔者这边直接白嫖的阿里云一个月,测试学习一个月应该是够了。记得重置密码并记录

申请完成后点击左侧目录找到云服务器。记住这个公有服务器,等等会用到。

2 Unity Mirror 坦克大战场景

在NetworkManager找到对应地址,填写刚刚对应的公网地址;max connections是最大连接数。注意要在阿里云安全组添加对应端口号。不然连接会失败。

 3 编写脚本

需要注意的是上传到Linux端的资源包需要为服务端。而打包出来的游戏文件需要为客户端。编写完脚本挂载到NetworkManager上。勾选时为服务端。不勾选为客户端。

using System.Collections;
using System.Collections.Generic;
using Mirror;
using UnityEngine;

public class AddService : MonoBehaviour
{
    public bool AppIsServer = false;
    private NetworkManager networkManager;
    void Start()
    {
        networkManager = GetComponent<NetworkManager>();
        if (AppIsServer == true)
        {
            networkManager.StartServer();
        }
        else
        {
            networkManager.StartClient();
        }

    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

勾选后选择Linux方式打包,要是在TargetPlatform找不到Linux 首先考虑 有没有安装Linux模块。记得勾选Server Build

打包完成后,文件目录内容为

  4 服务器工具WinScp&&可视化工具MobaXterm_Personal_22.2

首先打开WinScp来连接阿里云服务器,输入阿里云用户名和密码。 

然后将刚刚打包出来的文件夹上传到服务器。

 然后使用可视化工具MobaXterm_Personal_22.2。点击Session->SSH->输入账号->控制台输入密码-> cd linux(打包出来的文件夹名)->  chmod +x NetConectTest.x86_64(添加权限) ->./NetConectTest.x86_64(运行可执行文件)。出现Server already started.说明已经启用监听。下一步返回Unity

注意!NetConectTest.x86_64是可执行文件名称。可能根据你们的命名不同前缀不一样。在文件夹中查看x86_64即可

  5 最后一步!

回到Unity取消Bool勾选,切换为客户端。然后BuildSetting切换为Windows。注意取消勾选Server Build。

   6 测试

测试 连接成功 

<think>好的,用户想了解如何在Unity中设置和使用Mirror作为网络服务器。首先,我需要回忆一下Mirror的基本知识。MirrorUnity的一个开源网络框架,基于UNET,但更友好和模块化。用户可能需要从安装开始,所以第一步应该是指导他们通过Package Manager安装Mirror。 接下来,设置服务器需要创建NetworkManager对象。这部分要详细说明,包括调整传输方式,比如选择Telepathy或KCP,不同的传输协议对性能有影响。然后,创建网络大厅和玩家预制体,这部分需要说明如何添加NetworkIdentity和NetworkTransform组件,确保正确同步。 然后,服务器和客户端的启动步骤。用户可能分不清服务器和客户端的启动方法,需要明确说明Host模式和其他模式的区别。代码示例方面,应该提供一个简单的服务器脚本,比如继承NetworkManager并重写相关方法,或者创建自定义的NetworkManager脚本来处理连接事件。 另外,用户可能需要了解如何测试服务器,比如通过构建独立服务器和客户端,或者在编辑器内同时运行个实例。这部分需要提到使用ParrelSync来方便测试,避免修改代码时的重复劳动。 可能的问题点包括端口配置错误、预制体没有正确注册,或者网络组件的遗漏。需要提醒用户检查这些部分。同时,引用之前的资料,比如Mirror的简介和Chat示例中的内容,来支持步骤的正确性。 最后,生成相关问题时,要考虑用户接下来可能遇到的疑问,比如如何处理玩家同步、优化延迟,或者与其他框架的比较。确保问题覆盖常见的进阶主题,帮助用户深入学习。</think># 在Unity中配置Mirror网络服务器的完整指南 ## 一、Mirror基础配置 1. 通过Package Manager安装Mirror - 在Unity Editor中打开Window > Package Manager - 点击+号选择"Add package from git URL" - 输入Mirror的Git仓库地址:`https://github.com/vis2k/Mirror.git` 2. 创建核心网络对象 ```csharp using Mirror; public class MyNetworkManager : NetworkManager { public override void OnServerAddPlayer(NetworkConnectionToClient conn) { GameObject player = Instantiate(playerPrefab); NetworkServer.AddPlayerForConnection(conn, player); } } ``` ## 二、服务器搭建步骤 1. 创建NetworkManager游戏对象 - 新建空物体并添加`NetworkManager`和`KcpTransport`组件 - 设置传输协议参数: $$ \text{传输端口} = 7777,\quad \text{缓冲区大小} = 4096 $$ 2. 配置网络预制体 - 创建Player预制体并添加组件: ```markdown 1. NetworkIdentity 2. NetworkTransform 3. NetworkAnimator(如需动画同步) ``` 3. 服务器启动代码实现 ```csharp public class ServerStarter : MonoBehaviour { void Start() { // 设置最大连接数 NetworkManager.singleton.maxConnections = 20; // 启动服务器 NetworkManager.singleton.StartServer(); } } ``` ## 三、客户端连接配置 1. 连接参数设置 ```csharp public class ClientConnector : MonoBehaviour { public void ConnectToServer(string ip) { NetworkManager.singleton.networkAddress = ip; NetworkManager.singleton.StartClient(); } } ``` 2. 网络消息处理 ```csharp public class ChatHandler : NetworkBehaviour { [Command] public void CmdSendMessage(string msg) { RpcReceiveMessage(msg); } [ClientRpc] void RpcReceiveMessage(string msg) { Debug.Log($"收到消息:{msg}"); } } ``` ## 四、测试与验证 1. 本地测试方案 - 在编辑器中同时运行: - 1个服务器实例(File > Build Settings > Server Build) - 个客户端实例(使用ParrelSync插件) 2. 网络状态监控 ```csharp void OnGUI() { GUILayout.Label($"连接状态:{NetworkClient.isConnected}"); GUILayout.Label($"延迟:{NetworkTime.rtt}ms"); } ``` ## 五、进阶配置 1. 安全验证配置 ```csharp public class AuthModule : NetworkAuthenticator { public override void OnServerAuthenticate(NetworkConnectionToClient conn) { // 自定义验证逻辑 } } ``` 2. 负载均衡方案 - 使用`NetworkProximityChecker`组件 - 配置区域划分: $$ \text{可视距离} = 50m,\quad \text{更新间隔} = 0.5s $$ [^1]: Mirror采用组件化设计,支持种传输协议,开发者可根据需求灵活选择 [^2]: 网络消息系统采用Command/RPC模式,确保数据安全传输
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值