unity网络连接的学习

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;

public class ControllerScript : MonoBehaviour {

    public Button inbutton;

    public Button connectbutton;

    NetworkClient m_client;


    void Awake(){
        m_client = new NetworkClient ();
        Application.runInBackground=true;
    }

    // Use this for initialization
    void Start () {

        inbutton.onClick.RemoveAllListeners ();
        connectbutton.onClick.RemoveAllListeners ();

        inbutton.onClick.AddListener (InitServerAction);
        connectbutton.onClick.AddListener (ConnectServerAction);


    }

    void InitServerAction(){



        //启动服务器
        NetworkServer.Listen(10000);

        //注册事件
        NetworkServer.RegisterHandler(MsgType.Connect,OnServerAddPlayer);
        //m_client = ClientScene.ConnectLocalServer ();
        m_client.RegisterHandler (MsgType.Connect,OnConnectServer);

    }
    void ConnectServerAction(){
        Debug.Log (000);
        string ip = "192.168.16.16";//本机地址

        try{
            m_client.Connect(ip,10000);
            m_client.RegisterHandler(MsgType.Connect,OnConnectServer);
        }catch(System.Exception ex){
            
            Debug.Log ("连接错误"+ip+ex.Message);

        }

    }

    //服务器端检测到客户端的连接
    void OnServerAddPlayer(NetworkMessage msg){

        Debug.Log ("555");

    }


    //客户端连接成功之后的回调方法
    void OnConnectServer(NetworkMessage msg){

        Debug.Log ("222");

    }
}
### Unity网络连接框架的实现教程与 API 文档 在开发基于 Unity 的多人在线项目时,选择合适的网络框架对于项目的成功至关重要。以下是几种常见的 Unity 网络框架及其特点: #### 1. **自定义实现** 如果开发者希望完全掌控客户端与服务器之间的通信细节,则可以选择从零开始构建自己的网络框架。这种方式的优点是可以针对特定需求优化性能和功能;然而缺点在于需要投入大量时间和精力去解决诸如数据传输、连接管理和状态同步等问题。 - 数据传输:通过 TCP/UDP 协议发送消息包。 - 连接管理:建立并维持稳定的客户端-服务器链接。 - 状态同步:确保所有参与者的视图一致[^3]。 尽管这种方法灵活性最高,但对于大多数团队来说可能并不实际,因为存在较高的复杂度和技术门槛。 #### 2. **使用现有开源框架** ##### (a) Mirror Mirror 是一款流行的 Unity 插件,专为实时多人游戏而设计。它支持多种同步模式(如 RPC 和 StateSync),并且兼容最新版本的 Unity 编辑器。 主要特性包括但不限于: - 高效的状态复制机制; - 跨平台支持; - 易于集成到现有的项目结构当中[^4]。 安装步骤如下所示: ```bash git clone https://github.com/MirrorNG/mirror.git cd mirror open Assets/Packages/com.mirror.networking/package.json ``` 更多详情请查阅官方文档地址:<https://mirror-networking.com/docs/> ##### (b) FishNet 作为 Mirror 的继任者之一,FishNet 提供了更现代化的功能集以及改进后的用户体验。其核心理念依然是围绕着简化多人生命周期管理工作流展开的同时还引入了一些新概念比如预测补偿等高级技术手段来提升整体表现效果。 访问 GitHub 页面获取更多信息: <https://github.com/jacobp100/FishNET> 初始化命令样例: ```csharp using UnityEngine; using FishNet.Connection; public class Example : NetworkBehaviour { public override void OnStartClient(){ base.OnStartClient(); Debug.Log("Player connected."); } } ``` ##### (c) Netcode for GameObjects (NGO) 由 Unity 官方推出的新一代解决方案——Netcode For GameObjects ,旨在替代旧版 UNet 。相比前者而言不仅修复了许多已知缺陷而且增加了不少实用工具帮助开发者更快捷地搭建起完整的联机环境。 具体操作指南参见此处:<https://docs-multiplayer.unity3d.com/netcode/current/intro/gettingstarted.html> 示例代码片段展示如何创建一个简单的主机端口监听实例: ```csharp using Unity.Netcode; public class ServerSetup : MonoBehaviour{ private async void Start() { await NetworkManager.Singleton.StartServerAsync(); } } ``` #### 3. **其他资源推荐** 除了上述提到的内容之外还有许多值得探索的学习资料可以帮助加深理解有关方面知识水平: - 关于 AOP 在 WebApi 上的应用案例分析[^1]; - 深入探讨 unity 性能调优技巧的文章集合[^2]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值