NetWork局域网组件
来源:互联网 发布:易语言编程视频 编辑:程序博客网 时间:2024/06/05 00:21
使用NetWork创建服务器端Sever
NetworkConnectionError error = Network.InitializeServer(connections, listenPort, useNat);
》connections:表示最大连接数
》listenPort:连接的端口
》useNat:是否使用Nat技术
》NetworkPeerType.Disconnected有四中状态,分为客户端和服务器端
服务端:
NetworkPeerType.Disconnected: //服务端未初始化时
NetworkPeerType.Server: //初始化成功、开始监听后
客户端:
NetworkPeerType.Disconnected: //客户端未初始化
NetworkPeerType.Connecting: //客服端正在请求和服务端建立连接
NetworkPeerType.Client: //客户端跟服务端建立连接
using UnityEngine;using UnityEngine.UI;public class MyNetWord : MonoBehaviour { public int connections = 10; public int listenPort = 8899; public bool useNat = false; public Button createServerBtn; public Button linkServerBtn; public Text testTip; void Start() { createServerBtn.onClick.AddListener(OnCreatServerClick); } private void OnCreatServerClick() { NetworkConnectionError error = Network.InitializeServer(connections, listenPort, useNat); Debug.Log(error); //如果创建失败会得到错误信息,如果创建成功返回“NoError” if(Network.peerType == NetworkPeerType.Server) { testTip.gameObject.SetActive(true); createServerBtn.gameObject.SetActive(false); linkServerBtn.gameObject.SetActive(false); } }}
创建Client端连接服务器端
Network.Connect(ip, listenPort);
ip:要连接的服务器端的ip的地址
listenPort:要连接的服务器的端口号
返回结果:返回错误信息,没有错误就返回NoError
using UnityEngine;using UnityEngine.UI;enum PeerType{ Server, Client, Disconnected, None}public class MyNetWord : MonoBehaviour { public int connections = 10; public int listenPort = 8899; public bool useNat = false; public Button createServerBtn; public Button linkServerBtn; public Text testTip; public string ip = "127.0.0.1"; void Start() { createServerBtn.onClick.AddListener(OnCreatServerClick); linkServerBtn.onClick.AddListener(OnLinkServerClick); } private void OnGUI() { if (Network.peerType == NetworkPeerType.Client) { Debug.Log("++++++++++++++"); ChangTipText("客户端接入"); } } private void OnCreatServerClick() { NetworkConnectionError error = Network.InitializeServer(connections, listenPort, useNat); Debug.Log(error); //如果创建失败会得到错误信息,如果创建成功返回“NoError” if(Network.peerType == NetworkPeerType.Server) { ChangTipText("服务器创建完成"); } } private void OnLinkServerClick() { NetworkConnectionError error = Network.Connect(ip, listenPort); Debug.Log(error); } private void ChangTipText(string text) { testTip.text = text; testTip.gameObject.SetActive(true); createServerBtn.gameObject.SetActive(false); linkServerBtn.gameObject.SetActive(false); }}
MonoBehavior中提供监听服务器端和客户端的事件函数
》在服务器端掉用:
1.void OnServerInitialized(){} //服务器初始化时调用
2.OnPlayerConnected(NetworkPlayer player){} //当有客户端连接到服务器端是调用,在服务器端调用
》在客户端调用:
1.void OnConnectedToServer(){} //当客户端连接到服务器端时调用,在客户端调用
private void OnServerInitialized() //服务器初始化时调用,在服务器端掉用 { ChangTipText(testTip.text+",Server 完成初始化"); } private void OnPlayerConnected(NetworkPlayer player) //当有客户端连接到服务器端是调用,在服务器端调用 { ChangTipText(testTip.text + "一个客户端连接过来,客户端Index=" + player); } private void OnConnectedToServer() //当客户端连接到服务器端时调用,在客户端调用 { ChangTipText(testTip.text + "本客户端已经连接到了服务器端"); }
在局域网内创建共享物体
Network.Instantiate(cubePrefab, new Vector3(0, 10, 0), Quaternion.identity, group);
当服务器初始化时,在服务器端实例化一个cube物体,可以在客户端共享;在客户端创建,客户端也可以共享。
private void OnServerInitialized() //服务器初始化时调用,在服务器端掉用 { ChangTipText(testTip.text+",Server 完成初始化"); int group = int.Parse(Network.player.ToString()); Network.Instantiate(cubePrefab, new Vector3(0, 10, 0), Quaternion.identity, group); }
使用NetworkView组件做数据的同步
给局域网内共享的物体加上NetworkView组件课一同步共享物体的数据(如Transform信息)
注意:NetworkView组件会把创建出来共享物体的客户端当做主客户端,只有主客户端可以修改共享物体的数据并共享到其他客户端,其他客户端对该共享该共享物体的数据(数据以主客户端数据为主),没有权限修改该共享物体的数据(可以修改,但是不会共享到局域网内)
后续边学习边更新…
(敬请期待)
- NetWork局域网组件
- 局域网射击游戏之Network局域网组件
- unity3d 局域网组件network及netview的使用
- NetWork组件
- 局域网(LAN-Local Area Network)
- 1.Network Manager组件 和 Network Maneger HUD组件
- unity network组件的使用
- 【Unet】Unet Network相关组件
- 虚拟局域网VLAN(Virtual Local Area Network)
- Unity5.3.1f1 Network 局域网实时联网demo
- ue4-Network相关-组件及数据同步
- TWaver的Network组件相关方法
- 笔记本无线路由组件的局域网ping不通的问题
- 局域网即时通讯软件(一)--效果和组件介绍
- 问题: 使用putty登录显示network error:Connection refused使用putty登录显示network error:Connection refused 在局域网使
- 局域网??
- 局域网
- 局域网
- [后端人员耍前端系列]KnockoutJs篇:快速掌握KnockoutJs
- java查询mysql中文问题
- win7旗舰版关闭自动更新
- 进程和task_struct
- SQL语言分类DDL、DML、DQL、TCL、DCL
- NetWork局域网组件
- PopupWindow自定义对话框的使用技巧
- 模式匹配之KMP
- codeforces 8a(string的操作)
- JAVA中的栈和堆
- 利用腾讯AI开放平台进行情感分析
- 【C++11】新特性——引入nullprt
- [后端人员耍前端系列]KnockoutJs篇:使用KnockoutJs+Bootstrap实现分页
- Sublime Text3 注册码