精华内容
参与话题
问答
  • 这里是全部Unity3d网络中能用到相关的类及方法。纵观參数功能, Unity3d来写一个手游是不二的选择: RPC 能够传递的參数 int float string NetworkPlayer NetworkViewID Vector3 Quaternion ...

    这里是全部Unity3d在网络中能用到相关的类及方法。纵观參数功能,

    Unity3d来写一个手游是不二的选择:





    RPC 能够传递的參数
    int
    float
    string
    NetworkPlayer
    NetworkViewID
    Vector3
    Quaternion

    BitStream能够传递的參数
    void Serialize (bool value)
    void Serialize (char value) - only one byte [0, 255]
    void Serialize (short value)
    void Serialize (int value)
    void Serialize (float value, float maxDelta = 0.00001f);
    void Serialize (Quaternion value, float maxDelta = 0.00001f);
    void Serialize (Vector3 value, float maxDelta = 0.00001f);
    void Serialize (NetworkPlayer value)
    void Serialize (NetworkViewID viewID)

    RPCMode:
    Server - only server
    Others - send to everyone except the sender
    OthersBuffered - Send to everyone except sender and adds to the buffer
    All - send to everyone
    AllBuffered - Sends to everyone and adds to the buffer

    Network:
    Network.AllocateViewID - 自己主动生成一个可用的viewid
    Network.CloseConnection - 关闭当前连接
    Network.Connect - 连接到指定port或者域名
    Network.connections -当前网络的连接数
    Network.connectionTesterIP - 測试连接者的IP连接到server
    Network.connectionTesterPort - 測试连接者的port到server (Debug)
    Network.Destroy - 销毁跟当前viewID有关的网络连接
    Network.DestroyPlayerObjects - 销毁跟当前Viewid有关的玩家物体
    Network.Disconnect - 关闭全部已经连接好的连接。关闭网络网络接口
    Network.GetAveragePing - ping 指定连接的玩家
    Network.GetLastPing - 获取最后ping通的玩家
    Network.HavePublicAddress - 检查当前机器是否有一个公共IP地址
    Network.incomingPassword - 设置server的连接password
    Network.InitializeSecurity - 设置server加密。自己主动加密处理
    Network.InitializeServer - 初始化server
    Network.Instantiate - 实例化一个已经存在的prefab
    Network.isClient - 推断当前的执行是否为client
    Network.isMessageQueueRunning - 是否取消RPC訪问或者取消网络数据同步
    Network.isServer - 推断当前的执行是否为server
    Network.logLevel - 设置当前网络信息的日志信息等级(sys)
    Network.macConnections - 设置server能够连接的最大数或者游戏玩家数目
    假设设置成0表示仅仅有已经一个连接存在,设置成-1表示最大的连接数与当前
    连接数相等。假设是这样,假设玩家失去连接,则server的位置将会为玩家
    继续保留下来
    Network.mininumAllocatableViewIDs - 设置最小从server获取的viewid数量*
    Network.natFacilitatorIP - 使用网络穿透的IP地址
    Network.natFacilitatorPort - 设置网络穿透的port号
    Network.OnConnectedToServer - [client]当连接server成功时调用
    Network.OnDisconnectedFromServer - [client&svr]当server断开连接时调用
    Network.OnFailedToConnect - [client]当客户端连接失败时
    Network.OnNetworkInstantiate - [client|svr]当网络实例化一个对象调用
    Network.OnPlayerConnected - [svr]当有一个新的玩家连接到server时
    Network.OnPlayerDisconnected - [svr]当有玩家离开游戏时
    Network.OnSerializeNetworkView - [client|svr]通过network view同步变量*
    [void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info)
    Network.OnServerInitialized - [svr]当server初始化成功时
    Network.peerType - 网络对等状态
    Network.player - 得到当前的NetworkPlayer实例引用
    Network.proxyIP - 代理server的IP地址
    Network.proxyPassword - 代理server的password
    Network.proxyPort - 代理server的port号
    Network.RemoveRPCs - 从server那里移除全部跟当前玩家相关的RPC方法
    Network.RemoveRPCsInGroup - 从server那里移除跟当前组有关RPC方法
    Network.sendRate - 网络同步的发送频率
    Network.SetLevelPrefix - 设置网络前辍。将应用到全部viewid
    Network.SetReceivingEnabled - 设置指定玩家的分组信息能否够接收
    Network.SetSendingEnable - 设置指定玩家的分组信息能否够发送
    Network.TestConnection - 測试当前主机的连接状态*
    Network.TestConnectionNAT - 强制測试当前主机的连接状态
    Network.time - 得到当前网络的时间,单位秒
    Network.useProxy - 使用代理server


    NetworkView:
    NetworkView.Find - 通过netview id来查找一个NetworkView
    NetworkView.group - 当前NetworkView所在的组
    NetworkView.isMine - 当前物体是否有NetworkView控制功能
    NetworkView.observed - 当前NetworkView是否在观察中<name>
    NetworkView.owner - 当前NetworkView是归谁所拥有
    NetworkView.RPC - 调用当前全部已经连接了server的RPC方法
    NetworkView.SetScope - 设置NetworkView的关联NetworkPlayer信息
    NetworkView.stateSynchronization - 网络数据同步发送安全性*
    NetworkView.viewID - 当前NetworkView的NetworkViewID


    NetworkViewID:
    NetworkViewID.isMine - 是否是自己实例化的物体
    NetworkViewID.operator!= - 假设两个NetworkView不相等
    NetworkViewID.operator== - 假设两个NetworkView相等
    NetworkViewID.owner(NetworkView) - 哪个NetworkPlayer拥有的NetworkViewID
    NetworkViewID.ToString - 返回已经格式化好的NetworkViewID信息
    NetworkViewID.unassigned - 表示当前networkview id无效


    NetworkPlayer:
    NetworkPlayer.externalIP - 获取当前NetworkPlayer对外开放的IP地址
    NetworkPlayer.externalPort - 获取当前NetworkPlayer对开开放的port号
    NetworkPlayer.guid - 当前NetworkPlayer的GUID,当使用NAT punchthrough时
    NetworkPlayer.ipAddress - 当前NetworkPlayer的IP地址
    NetworkPlayer.port - 当前NetworkPlayer的端口号
    NetworkPlayer.operator!= - 是否两个NetworkPlayer不相等
    NetworkPlayer.operator== - 是否两个NetworkPlayer相等
    NetworkPlayer.ToString - 返回当前NetworkPlayer的索引


    HostData:
    HostData.comment - 主机描写叙述信息
    HostData.connectedPlayers - 当前的玩家连接数
    HostData.gameName - 当前主机相应的游戏名称
    HostData.gameType - 当前主机相应的游戏类型
    HostData.guid - NAT punchthrough时
    HostData.ip - 主机的IP地址
    HostData.passwordProtected - 主机是否有密码保护
    HostData.playerLimit - 主机最大能承受的玩家数量
    HostData.port - 当前主机的端口号
    HostData.useNat - 当前主机是否已经有Nat穿透功能

    MasterServer:
    MasterServer.ClearHostList - 清除通过从MasterServer.PollHostList获取的主机列表
    MasterServer.dedicatedServer - 当前机器是否有专有server
    MasterServer.ipAddress - 主server的IP地址
    MasterServer.OnFailedToConnectToMasterServer - [svr|client]当连接主server失败时回调
    MasterServer.OnMasterServerEvent - 当主server有事件通知[MasterServerEvent]
    MasterServer.PollHostList - 通过MasterServer.RequestHostList检查最新的主机列表
    MasterServer.port - 主server的端口号
    MasterServer.RegisterHost - 注冊当前server到主server
    MasterServer.RequestHostList - 人主server那里请求主机列表
    MasterServer.UnregisterHost - 从主server那里取消注冊当前server
    MasterServer.updateRate - 设置主server的最小更新频率。假设为0。则主server不进行更新,
    默认更新频率为60s





    

    转载于:https://www.cnblogs.com/lcchuguo/p/5170679.html

    展开全文
  • Unity3d网络编程_多机通信一些问题 网上一些网络教程脚本其实多数是正确的,不过IP地址那部分多数都会写成“127.0.0.1”本地IP。 这样会让你在自己机子上开两个案例运行,两者通信是完全没问题,一旦...

    网上一些网络教程脚本其实多数是正确的,不过IP地址那部分多数都会写成“127.0.0.1”本地IP。

    这样会让你在自己机子上开两个案例运行,两者通信是完全没问题,一旦是两台设备就会出现连接不上。

    这也是很明显的,IP监听是监听本地IP,离开本机自然也连接不上。

    方法很简单,服务器端把IP监听对上号,要么就直接监听Any,这样再锁定端口就可以在不同设备通信了。

     System.Net.IPAddress localAdd = System.Net.IPAddress.Any;

    posted on 2015-11-23 09:02 低音炮可怕男子 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/DreamTime/p/4987399.html

    展开全文
  • 首先个人说说题外话,Unity3d使用的网络库核心是用C++实现的一款商业网络游戏引擎库。 RakNet。所以对于移动设备来说,用Unity3d来写server是全然能够的,而且内建网络库的各项功能封装完好。 对于一款ARGP都能够...

    首先个人说说题外话,Unity3d使用的网络库核心是用C++实现的一款商业网络游戏引擎库。

    RakNet。所以对于移动设备来说,用Unity3d来写server是全然能够的,而且内建网络库的各项功能封装完好。

    对于一款ARGP都能够轻松的上手来写server,游戏对象的处理或者同步对象使用RPC。

    对于一般的手游来说省了不少的麻烦事。

    其网络性能也不亚于普通的HTTP传输协议


    Unity3d中的内建网络核心是使用Network函数。使用Network能够创建一个server。

    也能够建立一个到server的连接。使用Network.InitalizeServer(int maxConns, listenPort, boo useNat)来初始化一个server,

    这里仅仅是指定了本地server的port,并没有指定ip地址。假设是本机。直接使用127.0.0.1就可以。

    假设电脑已经联网,Unity3d会指定公网IP地址。或者127.0.0.1。作为server默认连接地址。

    假设server初始化成功。在Network的回调函数中。会调用

    void OnServerInitialized(),假设初始化失败,直接报错误信息。


    使用Network.Connect(ip, port)能够简单的连接到一个已经開始的服务端,假设连接server成功,则会回调

    void OnConnectedToServer(), 假设连接server失败。则会回调

    void OnFailedToConnect(NetworkConnectionError error),函数里面封装了错误信息。


    而且对游戏对象的销毁处理也非常方便。省了对server的压力。比方一个多人同一时候在线的网络。有一个即时游戏公告

    希望在线的玩家以及当前不在线的玩家都能够看到。在使用Unity3d的内建功能当server时,能够直接缓存公告

    直到玩家上线,然后给玩家展示。

    还有比方。有玩家下线。

    对于当前玩家的游戏即时缓存已经没有了作用,而且会占用server的资源。

    你能够在回调函数里直接销毁不论什么玩家有当前下线玩家信息的玩家。然后通知server自己来销毁。

    这也是RPC的强大之处。

    还有ARPG游戏中创建房间是一件比較麻烦头痛的事情,而在Unity3d内建网络库里,你能够直接迁移主机信息,

    能够临时将server由client来托管。还有网络数据同步回调,特别对NetworkView。能够说用Unity3d来写server

    是一个非常不错的选择。相信Unity3d,他不是一个免费软件。

    自己主动写了一个简单的server创建与client连接的实例:

    	public void StartSvr () {
    		if (Network.peerType == NetworkPeerType.Disconnected) {
    			print("start init & start svr.");
    
    			Network.InitializeServer(32, port, false);
    		}
    	}
    
    	public void StartUsr () {
    //		if (Network.peerType == NetworkPeerType.Connecting) {
    		print("svr running noramlize.");
    		Network.Connect("192.168.6.185", port);
    //		}
    	}
    
    
    
    	// callback state for svr
    	void OnServerInitialized() {
    		print("Server initialized and ready.");
    	}
    
    	void OnPlayerDisconnected(NetworkPlayer player) {
    		Debug.Log("Clean up after player " + player);
    		Network.RemoveRPCs(player);
    		Network.DestroyPlayerObjects(player);
    	}
    
    	private int playerCount = 0;
    	void OnPlayerConnected(NetworkPlayer player) {
    		Debug.Log("Player " + playerCount++ + " connected from " + player.ipAddress + ":" + player.port);
    	}
    	// callback svr end
    
    
    	// callback state for usr
    	void OnConnectedToServer() {
    		Debug.Log("Connected to server");
    	}
    
    	void OnDisconnectedFromServer(NetworkDisconnection info) {
    		if (Network.isServer)
    			Debug.Log("Local server connection disconnected");
    		else
    			if (info == NetworkDisconnection.LostConnection)
    				Debug.Log("Lost connection to the server");
    		else
    			Debug.Log("Successfully diconnected from the server");
    	}
    
    	void OnFailedToConnect(NetworkConnectionError error) {
    		Debug.Log("Could not connect to server: " + error);
    	}
    	// callback usr end


    :)

    展开全文
  • unity3d网络编程关键

    千次阅读 2014-03-27 10:52:08
    最近几天研究unity3d网络编程,小有斩获,列举一些我认为比较重要的关键点。 还在学习阶段,有误的地方还望留言指正,不胜感谢。 1.Network.Instantiate函数 这个函数一般在客户端连接到服务器(服务器也作为游戏...

    最近几天研究unity3d的网络编程,小有斩获,列举一些我认为比较重要的关键点。

    还在学习阶段,有误的地方还望留言指正,不胜感谢。

    1.Network.Instantiate函数

    这个函数一般在客户端连接到服务器(服务器也作为游戏的一个player时创建服务器时也应该调用)时在服务器调用。

    先看看官网的说明The given prefab will be instanted on all clients in the game. Synchronization is automatically set up so there is no extra work involved. The position, rotation and network group number are given as parameters. Internally this is an RPC call so when Network.RemoveRPCs is called for the group number, the object will be removed. Note that there must be something set to the playerPrefab in the Editor. You can read more about instantiations in the object reference Object.Instantiate.

    什么意思呢?就是给定的预设注意在编辑器中必须设置playerPrefab将在所有的客户端上实例化。同步被自动设置,因此没有额外的工作要做。位置、旋转和网络组数值作为给定的参数。这是一个RPC调用,因此,当为该组数Network.RemoveRPCs被调用,这个物体将被移除。

    用了这个函数后所有你想创建的物体都会在所有的客户端调用并实例化,如果只是做对战类游戏,不用socket编程的话,简直方便。

    2.Network.OnSerializeNetworkView函数

    这个函数可以传输一些自定义的数据,比如人物的血量,怪物掉血等数据,在客户端连接到服务器时自动调用。它的发送取决于谁拥有该物体,即所有者发送,其他所有人接收。

    举个例子:

    using UnityEngine;
    using System.Collections;
    // This objects health information
    //这个物体的生命信息
    public class example : MonoBehaviour {public int currentHealth;void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info) {int health = 0;if (stream.isWriting) {health = currentHealth;stream.Serialize(ref health);} else {stream.Serialize(ref health);currentHealth = health;}}}

    3.其他

    //Client functions called by Unity
    function OnConnectedToServer() {
    	Debug.Log("This CLIENT has connected to a server");	
    }
    
    function OnDisconnectedFromServer(info : NetworkDisconnection) {
    	Debug.Log("This SERVER OR CLIENT has disconnected from a server");
    }
    
    function OnFailedToConnect(error: NetworkConnectionError){
    	Debug.Log("Could not connect to server: "+ error);
    }
    
    
    //Server functions called by Unity
    function OnPlayerConnected(player: NetworkPlayer) {
    	Debug.Log("Player connected from: " + player.ipAddress +":" + player.port);
    }
    
    function OnServerInitialized() {
    	Debug.Log("Server initialized and ready");
    }
    
    function OnPlayerDisconnected(player: NetworkPlayer) {
    	Debug.Log("Player disconnected from: " + player.ipAddress+":" + player.port);
    }
    
    //others
    function OnFailedToConnectToMasterServer(info: NetworkConnectionError){
    	Debug.Log("Could not connect to master server: "+ info);
    }
    
    function OnNetworkInstantiate (info : NetworkMessageInfo) {
    	Debug.Log("New object instantiated by " + info.sender);
    }
    
    function OnSerializeNetworkView(stream : BitStream, info : NetworkMessageInfo)
    {
    	//Custom code here (your code!)
    }

    展开全文
  • 这里是所有unity3d网络中能用到相关的类及方法,纵观参数功能, Unity3d来写一个手游是不二的选择: RPC 可以传递的参数 int float string NetworkPlayer NetworkViewID Vector3 ...
  • 使用Unity3d内置的网络建立一个简单的server。主机时,请使用机器。创建一个client连接到本机。 我使用的NGUI作为主界面,server代码: string ipAddress = "127.0.0.1"; int port = ...
  • 使用Unity3d的内建网络搭建一个简单的服务器,使用本机当主机,创建一个客户端连接到本机,
  • [Unity3D ARPG网络游戏编程实践] 想杀人了,百度了半天也不知道本地服务怎么写,结果资源里的服务器竟然可以用了~~~~(>_<)~~~~ 使用了两种方法1 这个方法特别郁闷,自己写服务器,自己写客户端可以通讯。可是...
  • Unity3D网络游戏开发——开始网络编程:Echo(客户端部分) 什么是Echo程序 Echo程序是网络编程中最基础的案例。建立网络连接后,客户端向服务端发送一行文本,服务端收到后将文本送回客户端。Echo程序分为客户端和...
  • unity3d 实现了网络对战的坦克游戏,将有助于了解unity3d开发, 和c#服务器编程
  • 1网络连接 (unity NetWork与socket的对比)(流畅) 2登陆UI制作 (登录协议与模型定制 及流程开发) 3U注册面板制作(流畅) 4警告弹窗制作(流畅) 5流程与状态控制 6登陆按钮脚的添加、协议定制、消息发送...
  • Unity3d实战之Unity3d网络游戏实战篇(13):登录&amp;注册面板 学习书籍《Unity3d网络游戏实战》 罗培羽著 机械工业出版社 本文是作者在学习过程中遇到的认为值得记录的点,因此引用的代码等资源基本出资...
  • 1.使用Unity3d内置的Network方法,采用RPC(远程过程调用)的方式来进行网络编程。 2.使用第三方的网络服务器构件,如smartFox,netDog(c++)等等。 3.Unity3d 支持插件开发。 4.对于小规模的网络IO,可以查看...
  • unity3d ARPG网络游戏编程实践 作者:A神 目录 1 网络连接 (unity NetWork与socket的对比) 2 登录界面 (登录协议与模型定制 及流程开发) 3 角色选择 (进入游戏后的角色选择界面及通信流程) 4 角色创建 ...
  • Unity网络游戏编程学习(一)Socket通讯流程简单的示例程序服务器 学习《Unity3D网络游戏实战》(第二版)时的学习笔记 Socket通讯流程 简单的示例程序 服务器
  • 游戏网络编程必备知识 网名:海洋,CSDN社区讲师,3D游戏引擎开发者,IT...
  • 学习《Unity3D网络游戏实战》(第二版)时的学习笔记 上一篇:Unity网络游戏编程学习(三) 多路复用Select 多路服用就是同时处理多路信号,比如同时检测多个Socket的状态,可以用这个方法解决Poll服务端中CPU占用率...
  • 学习《Unity3D网络游戏实战》(第二版)时的学习笔记 上一篇:Unity网络游戏编程学习(二) 状态检测 比起使用异步程序,同步程序更简单明了,而且不会引发线程问题。只需要在阻塞方法前机上一层判断,有数据可读才...
  • using UnityEngine; using System.Collections; using System; using System.Threading; using System.Net; using System.Net.Sockets; using System.Text;...public class NewBehaviourScript : MonoBehav
  • Unity3D零基础到项目开发课程 C#零...9 Unity3D常用网络框架与实战解析 10 unity游戏性能优化 11 Unity3d项目导航系统实现 第三阶段:Unity3D项目开发实战 1 Kinect体感切水果游戏开发 2 Unity3D实例教程之3D

空空如也

1 2 3 4 5 6
收藏数 105
精华内容 42
关键字:

unity3d网络编程