Unity 多人网络连接
NetWorkServer.cs
using UnityEngine;
using System.Collections; public class NetWorkServer : MonoBehaviour
{
// Use this for initialization
// 定义远程连接IP地址
private string remoteIP = "127.0.0.1";
// 定义远程的端口号
private int remotePort = ;
// 定义本地侦听的端口号
private int listenPort = ;
// 限制连接数量为15个用户
private int connectCount = ;
// 是否启用网络地址转换器
private bool useNAT = false; void OnGUI ()
{
switch (Network.peerType) {
case NetworkPeerType.Disconnected:
// 服务器未开启时,开启服务器
StartConnect ();
break;
case NetworkPeerType.Server:
// 成功连接服务器
OnServer ();
break;
case NetworkPeerType.Client:
break;
case NetworkPeerType.Connecting:
break;
}
} void StartConnect ()
{
remoteIP = GUI.TextField (new Rect (, , , ), remoteIP); if (GUI.Button (new Rect (, , , ), "创建服务器")) { Network.incomingPassword = "UnityNetwork";
NetworkConnectionError error = Network.InitializeServer (connectCount, remotePort, useNAT);
Debug.Log (error);
}
} void OnServer ()
{
GUILayout.Label (" 服务端创建成功。等待连接····"); // 得到的 IP 与端口
string ip = Network.player.ipAddress;
int port = Network.player.port;
GUILayout.Label (" ip地址:" + ip + ".\n 端口号码:" + port); // 连接到服务器的所有客户端
int connectLength = Network.connections.Length; // 遍历所有客户端并获取IP与端口号
for (int i = ; i < connectLength; i++) {
GUILayout.Label (" 连接的IP:" + Network.connections [i].ipAddress);
GUILayout.Label (" 连接的端口:" + Network.connections [i].port);
} if (GUI.Button (new Rect (, , , ), "断开连接")) {
// 从服务器上断开连接
Network.Disconnect ();
}
} void OnPlayerConnected (NetworkPlayer player)
{ GetComponent<NetworkView> ().RPC ("OnNetworkLoaded", RPCMode.Others, player); } void OnPlayerDisconnected (NetworkPlayer player)
{
Debug.Log ("清除对象: " + player);
Network.RemoveRPCs (player);
Network.DestroyPlayerObjects (player);
} }
NetWorkColient.cs
using UnityEngine;
using System.Collections; public class NetWorkColient : MonoBehaviour
{ // Use this for initialization
// 定义远程 IP 地址
private string remoteIP = "127.0.0.1";
// 定义侦听端口
private int listenPort = ;
// 是否开启网络 IP 转换器
private bool useNAT = false; private string ChatMessage = "Client Ready"; void OnGUI ()
{ switch (Network.peerType) {
case NetworkPeerType.Disconnected:
StartConnect ();
break;
case NetworkPeerType.Client:
ClientTo ();
break;
case NetworkPeerType.Connecting:
Debug.Log ("Connecting...");
break;
}
} void StartConnect ()
{
if (GUI.Button (new Rect (, , , ), "Connect Server")) {
NetworkConnectionError error = Network.Connect (remoteIP, listenPort, "UnityNetwork");
Debug.Log (error);
}
} void ClientTo ()
{ GUILayout.Label ("Connected"); } void OnConnectedToServer ()
{
// 通知场景中的物体已经与服务端连接
foreach (GameObject go in FindObjectsOfType(typeof(GameObject))) {
go.SendMessage ("OnNetworkLoaded", SendMessageOptions.DontRequireReceiver);
} } void OnDisconnectedFromServer (NetworkDisconnection info)
{ Network.RemoveRPCs (Network.player);
Network.DestroyPlayerObjects (Network.player);
Application.LoadLevel (Application.loadedLevel); } }
Unity 多人网络连接的更多相关文章
- Unity如何判断网络连接类型
今天遇到了一个问题,如何判断手机游戏当前的网络连接类型,是wifi还是234G? 起初准备在Android中写好插件供Unity调用,后来在网上浏览众神的帖子时,在csdn上看到了使用NetworkR ...
- Unity判断网络连接类型
使用NetworkReachability判断手机游戏当前的网络连接类型,是wifi还是234G using UnityEngine; using System.Collections; public ...
- Linux 查看主机、CPU、内存、内核、网卡或MAC地址、关机、重启、当前使用人、网络连接状态、主机目前使用状态
7 uname -a 显示主机名.内核.硬件结构等全部信息 unmae -r 只显示内核 查看Redhat和centos的内核版本也可以用cat /etc/redhat-release 或cat /e ...
- linux虚拟机网络连接模式 bridged, host-only, NAT
最近安装了fedora9.0,却一直不能连接到外网,我用的是3G无线网卡上网的,起初以为是linux不支持3G无线方式的,可后来装了虚拟机ubuntu却可以上网,在后来用有ADSL网络连接的电脑安装f ...
- VMware 虚拟机的网络连接方式详解
VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作 ...
- 随记PC-win7 64位系统网络连接状态一直转圈、等待状态的异常解决方案
各位看官好~ 最近电脑也做了下升级,入手个士必得360G的SSD来玩玩,顺便也下个新系统,看看有什么区别,想想顺便升级下系统也是好的,就开始了装机,装系统的路程~~~~~~ 好了不说废话,直接进入主题 ...
- 百度APP移动端网络深度优化实践分享(二):网络连接优化篇
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<二>连接优化>,感谢原作者的无私分享. 一.前言 在<百度APP移动端网 ...
- Linux虚拟机的三种网络连接方式
Linux虚拟机的三种网络连接方式 虚拟机网络模式 无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式: 1.桥接 2.NAT 3.Host- ...
- VMware网络连接模式——桥接模式、NAT模式以及仅主机模式的介绍和区别
在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥 ...
随机推荐
- springcloud ConfigServer的工作原理
前话 根据前文得知,bootstrapContext引入了PropertySourceLocator接口供外部源加载配置,但作用是应用于子级ApplicationContext的环境变量Environ ...
- [leetcode]254. Factor Combinations因式组合
Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a func ...
- redis集群密码设置
1.密码设置(推荐)方式一:修改所有Redis集群中的redis.conf文件加入: masterauth passwd123 requirepass passwd123 说明:这种方式需要重新启动各 ...
- node.js 使用 net 模块模拟 websocket 握手,进行数据传递。
websocket 是一种让浏览器与服务器之间建立持久的连接,并能进行双向数据传输的一种协议. websocket 属性应用层协议,基于tcp传输协议,并复用http的握手通道. 一.如何进行webs ...
- CSS学习总结4:派生选择器学习总结
派生选择器:通过依据元素在其位置的上下文关系来定义样式,你可以使标记更加简洁.派生选择器中一共分为三种:后代选择器.子元素选择器.相邻兄弟选择器. 1.初识派生选择器 实例:你希望列表中的 stron ...
- Python中添加中文注释报错SyntaxError: Non-UTF-8 code starting with '\xc1'
问题:在文本编辑器中编辑Python文件时添加中文注释,运行python文件时报错.SyntaxError: Non-UTF-8 code starting with '\xc1' 解决方法:在文本开 ...
- Rsync的一般使用需求
rsync 只同步指定类型的文件 需求: 同步某个目录下所有的图片(*.jpg),该目录下有很多其他的文件,但只想同步*.jpg的文件. rsync 有一个--exclude 可以排除指定文件,还有个 ...
- 【转】nc 使用说明
netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它.使用netcat命令所能完成的事情令人惊讶. netcat所做的 ...
- 结构体struct、联合体union、枚举类型enum
1.c语言中的类型 1)内置类型——char,short,int,float,double: 2)用户自定义类型(UDT)——struct结构体,union联合体,enum枚举类型 2.内存对齐 2. ...
- Android studio提速配置
1. C:\Program Files\Android\Android Studio\bin studio64.exe.vmoptions 2.创建 gradle.properties 配置文件