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)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥 ...
随机推荐
- 微信H5授权登录,公众平台,开放平台
首先,特别不喜欢做微信开发,各种设置,各种文档,各种坑. 最近做一个H5网页,微信扫码打开,需要使用微信登录,获取用户的基本信息,自动保存,自动登录. 1.先去微信公众平台https://mp.wei ...
- 每月最后一周的周六晚上21:00执行任务-crontab
0 21 * * 6 /bin/sh /root/time.sh #“6”代表周六 时间判断脚本如下: #!/bin/bash if [ "$(date -d "+7 days&q ...
- 探索未知种族之osg类生物---呼吸分解之更新循环一
上节总结 前几天我们大体上介绍完成了osg的事件循环的介绍,总结一下osg的时间循环主要就是得到平台(windows)的所有消息,并遍历所有的node的eventCallback,并对他们进行处理.接 ...
- JVM 字节码(三)异常在字节码中的处理(catch 和 throws)
JVM 字节码(三)异常在字节码中的处理(catch 和 throws) 在 ClassFile 中到底是如何处理异常的呢? 一.代码块异常 catch catch 中的异常代码块在异常是如何处理的呢 ...
- CMD命令启动和关闭SQL服务
1.开启:net start mssqlserver 2.关闭:net stop mssqlserver
- flask更改已有的response
今天遇到个问题,需要更改返回的response,但框架已经生成了一个response,所以需要直接更改. 试着找了找解决办法,最终解决方式如下: #下文中payload的类型是 # class Res ...
- 20175316盛茂淞 《java程序设计》第三周课堂测试错题总结
20175316盛茂淞 <java程序设计>第三周课堂测试错题总结 出现问题 错题总结 题目1 在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15 1. 修改代 ...
- Python Day 14 迭代器、for循环原理、枚举、生成器
阅读内容 内容回顾 带参装饰器和wraps用法 迭代器知识引入 可迭代对象 迭代器对象 for循环迭代器 枚举对象 生成器 ##内容回顾 函数的嵌套定义:在函数内部定义另一 ...
- python_day1_常量
常量 定义: 不变的量为常量,或在程序中不可改变的量 用法: AGE_OF_BOY =56 注:在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量
- UART串口通讯协议
一.UART定义 UART 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种通用的串行异步全双工数据收发传输器(总 ...