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)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥 ...
随机推荐
- 关于php条形码生成(barcode),修改样式
今天听错了需求,以为要重新设计条形码,第一次制作这个,经过搜索使用的barcode这个第三方的,具体使用步骤网上很多就不在这里详细介绍了.主要是今天遇到的样式修改问题: barcode经过查看是无法自 ...
- [leetcode]30. Substring with Concatenation of All Words由所有单词连成的子串
You are given a string, s, and a list of words, words, that are all of the same length. Find all sta ...
- java_21 Set接口、HashSet类、LinkedSet类
1Set 包含不可重复元素的集合,是一个无序集合. 子类:hashSet .LinkedSet 2.含有父类Collection的方法 add(): 如果 set 中尚未存在指定的元素,则添加此元素( ...
- Mybatis配置问题解决Invalid bound statement (not found)
首先这个异常的原因是系统根据Mapper类的方法名找不到对应的映射文件. 网上也搜索了到了类似的文章,一般可以从以下几个点排查: mapper.xml的namespace要写所映射接口的全称类名,而且 ...
- Android R文件介绍
R.java 文件中默认有attr.drawable.layout.string等色哥静态内部类,每个静态内部类分别对应着一种资源,如layout静态内部类对应着layout中的接界面文件,其中每个静 ...
- 3R - 单词数
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Input 有多组数据,每组一行,每组就 ...
- 2018php最新面试题之PHP核心技术
一.PHP核心技术 1.写出一个能创建多级目录的PHP函数(新浪网技术部) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?php ...
- Node.js web发布到AWS ubuntu 之后,关闭Putty,Node 项目也随之关闭的解决办法
最近公司把BlockChain和对应的Node Web都发布到了AWS 的ubuntu 系统上. 但是遇到了一个问题,每次启动 Node Web之后,关闭Putty,Node Web也随之关闭. 由于 ...
- redis在游戏服务器中的使用初探(一) 环境搭建
这里我们尝试在游戏服务器中的数据处理中使用redis 通过该系列文章能够学习 redis的基本操作 源码编译 客户端开源库的编译和使用 以及在游戏服务器中的缓存使用 作为初次摸索 尽量使得环境简单 ...
- Django 载入静态文件地址
1,Django框架中有专门存放静态文件的目录. 项目中的CSS.图片.js都是静态文件 配置静态文件 在settings 文件中定义静态内容 2,这些静态文件,他们统一存放在项目目录,templat ...