关于unity中Network组件的简单应用

来源:互联网 发布:windows xp下 arp命令 编辑:程序博客网 时间:2024/06/06 19:17

以下信息来自麦子学院

这是最终实现的效果 


Network组件的基本原理及相关知识


using System.Collections;using System.Collections.Generic;using UnityEngine;public class NetWork : MonoBehaviour {    int port = 10010;    string message = "";    Vector2 sc;    void OnGUI() {         switch(Network.peerType){            case NetworkPeerType.Disconnected:                StartSeever();                break;            case NetworkPeerType.Server:                OnServer();                break;            case NetworkPeerType.Client:                break;            case NetworkPeerType.Connecting:                break;                      }    }    void StartSeever() {        if (GUILayout.Button("创建服务器")) {            var error = Network.InitializeServer(12, port, false);            //初始化服务器 返回一个创建错误的状态            switch(error){                case NetworkConnectionError.NoError:                    break;                default:                    Debug.LogError("启动服务器失败");                    break;            }        }    }    void OnServer(){        GUILayout.Label("服务器已经运行,等待客户端连接");        foreach (var temp in Network.connections) {            GUILayout.Label("客户端"+"IP"+temp.ipAddress+"Potr"+temp.port);            GUILayout.Label("-----------------");        }        //创建scrollview        sc=GUILayout.BeginScrollView(sc,GUILayout.Width(280),GUILayout.Height(350));        //绘制纹理显示内容        GUILayout.Box(message);        //结束滚动视图        GUILayout.EndScrollView();    }    [RPC]    void RecvMessage(string str,NetworkMessageInfo info){        message = "发送端" + info.sender + "消息" + str;    }}

using System.Collections;using System.Collections.Generic;using UnityEngine;public class NetWorkClient : MonoBehaviour {    int port = 10010;    string message = "";    Vector2 sc;    void OnGUI()    {        switch (Network.peerType)        {            case NetworkPeerType.Disconnected:                StartConnection();                break;            case NetworkPeerType.Server:                break;            case NetworkPeerType.Client:                OnClient();                break;            case NetworkPeerType.Connecting:                break;        }    }    void StartConnection()    {        if (GUILayout.Button("连接服务器"))        {            var error = Network.Connect("127.0.0.1",port);            //连接服务器            switch (error)            {                case NetworkConnectionError.NoError:                    break;                default:                    Debug.LogError("客户端错误"+error);                    break;            }        }    }    void OnClient()    {        //创建scrollview        sc = GUILayout.BeginScrollView(sc, GUILayout.Width(280), GUILayout.Height(350));        //绘制纹理显示内容        GUILayout.Box(message);        //文本框        message = GUILayout.TextArea(message);        if(GUILayout.Button("发送")){            GetComponent<NetworkView>().RPC("RecvMessage",RPCMode.All,message);            //第一个参数发给的对象名称 第二个是给所有人发         }        //结束滚动视图GUILayout.Label("服务器已经运行,等待客户端连接");        GUILayout.EndScrollView();    }    [RPC]    void RecvMessage(string str, NetworkMessageInfo info)    {        message = "发送端" + info.sender + "消息" + str;    }}



原创粉丝点击