unity photon视频教程 没有网络怎么测试

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
2.安装unity 5.0以前版本。&3.在官网的unity Asset Store搜索“Photon Viking Demo”,找到程序,点击“open in unity”。如果无法直接转到unity程序下的asset store,先创建一个工程就可以了。&&&4.在unity程序asset store点击“import”,这时请会导入库文件及下载源文件。下载后DemoVikings、Photon Unity Networking、PhotonChatApi、Plugins四个文件夹。&5.切换在【Console】【Error Pause】将看到有一些错误提示,原因是缺少New Unity Project1\Assets\Plugins\Photon3Unity3D.dll引用。错误:Assets/Photon Unity Networking/Plugins/PhotonNetwork/LoadbalancingPeer.cs(28,40): error CS0246: The type or namespace name&`PhotonPeer' could not be found. Are you missing a using directive or an assembly reference?&&&6.双击错误打开“MonoDevelop”,在Assembly-CSharp的References上点右键选择“Edit References...”,在 “.net Assembly”中添加New Unity&Project 1\Assets\Plugins\Photon3Unity3D.dll。7.在“MonoDevelop”编译一下Assembly-CSharp,如果没有报错说明Assembly-CSharp代码都正确了。但是编译Assembly-CSharp-Editor会报错。8.在Assembly-CSharp-Editor添加项目引用Assembly-CSharp。&9.解决Error CS0241: 不允许有默认参数说明符 (CS0241) 错误。打开Mono,【project】【Assembly-CSharp-Editor Options】【 Build】【General】Mono/.Net 4.510.解决 Warning CS0618: “UnityEngine.Screen.lockCursor”已过时:“Property lockCursor has been deprecated. Use Cursor.lockState and&Cursor.visible instead.”。用Cursor.lockState替换UnityEngine.Screen.lockCursor。其他类似。11.Error CS0246: 未能找到类型或命名空间名称“Newtonsoft”(是否缺少 using 指令或程序集引用?) ,从网上下载一个Newtonsoft.Json.dll组件添加到Assembly-CSharp-Editor引用。12.在Mono都编译正确后,关闭Mono。切换到Unity下,点击菜单【Assets】【Reimport all】重新加载。13.在Unity下点击菜单【File】【Build & Run】,编译运行。程序运行了,但无法连接到Photon服务器。&13.在Unity下点击菜单【Window】【Photon Unity Networking】【PUN Wizard】,在对话框中选择【Setup Project】填入AppID。AppId来源,登录photon官网(/en-US/Photon),点击【Dashboard】【Realtime】就可以看到appid了。&&&14.再次编译运行就可以连接到Photon服务器了。CREATE ROOM创建一个房问,JOIN ROOM加入一个房间就可以看到多个牛头人在游戏中了。QWEASD可移动或转换视角。&&
阅读(396)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'photon官方例子的运行',
blogAbstract:'1.官方入门教程:/en-us/pun/current/tutorials/tutorial-marco-polo2.安装unity 5.0以前版本。&3.在官网的unity Asset Store搜索“Photon Viking Demo”,找到程序,点击“open in unity”。如果无法直接转到unity程序下的asset store,先创建一个工程就可以了。',
blogTag:'photon',
blogUrl:'blog/static/6',
isPublished:1,
istop:false,
modifyTime:3,
publishTime:1,
permalink:'blog/static/6',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}【好羞涩呀】推荐一个亲测非常不错的unity网络功能的教程【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:71,729贴子:
【好羞涩呀】推荐一个亲测非常不错的unity网络功能的教程收藏
最近几天一直在学习unity的网络功能,刚开始看文档然后自己测API,都觉得学不到实用的东西,然后看了几篇博客算是入了门。但是还是没有找到一篇真正能帮上大忙的教程,直到遇到这篇教程,简直太实用了!强力推荐!
unity3d-全程实战教学模式,入门+精通+应用,4个月变身VR开发工程师!月薪10000..起!unity3d7天免费试学!就业后付款!现在报名立减1000,先到先得!!
你好歹介绍介绍
这么直接推荐太粗暴太生硬了
谢分享,话说苍霞,你的节操带掉了,快捡起来
话说unity下到底是用自带NetworkView的人多还是socket的人多呢。本来听人说5会出新网络组件的,结果貌似还是没有=。=
唉 我特么还是去看socket吧
求博客地址
这个呀。。。我反正没弄懂,试着联机,不行的。。。联网问题我研究了好久,最终用photon实现了功能
好贴,怒赞!
哎呀,留个脚印,嘿嘿
与百万美粉分享你老爸的 “ba”气十足,空调洗衣机任性送
兄弟,好歹也翻译一下再共享,全英的教程不忍直视
终于找到了翻译,楼主拿去,请叫我雷锋。
登录百度帐号推荐应用Unity 3D Photon服务器 - 简书
Unity 3D Photon服务器
周末两天又捡起了以前粗略接触过的Photon服务器,当时只是学会了怎么用PUN插件现学现卖一个远程共享操作,对原理什么的都不求甚解。这次又重新从头开始打算用Photon实现Chatroom和一个多人MMO Demo。下面是学习后用XMind做的一个总结图。
Photon.png
Photon简介
Photon是Exit Games公司推出的服务端网络游戏引擎,也是一款实时的Socket服务器和开发框架。Photon使用起来非常方便,也容易扩展。Photon包含两个部分,一部分是一个socket服务器,另一部分是其针对各个平台编写的SDK。服务端架构在windows系统平台上,采用C#语言编写。客户端SDK提供了多种平台的开发API,其中就包括Unity 3D客户端。Photon服务器底层内核采用C++编写,上层用C#进行了一层封装,为开发者提供接口进行业务逻辑的编写,提高了服务器框架的开发效率。
Photon引擎的特点如下:1. 架构于Windows平台下原生态性能高度优化的系统。2. 经过实践证明适用于众多的商业游戏,常在手机网游服务器框架中使用。典型案例包括Glu公司的Indestructible、Eternity Warriors 3和Innogames公司的Kartuga等游戏的服务器。3. 服务器端游戏逻辑采用C#语言实现。4. 采用纤程处理消息机制以避免采用线程导致的问题(资源竞争、占用冲突、多线程通讯)。5. 部署简单,支持云端服务(Photon Cloud)。6. 采用小尺寸的二进制协议,可根据需要使用有序可靠的UDP协议。UDP协议不需要验证数据传输的准确性。Photon也支持TCP、UDP、Websocket。7. 封装了跨平台(Unity 3D、Cocos2d-x、Android、iOS、Html5、Flash)的网络层模块。
配置Photon服务器
安装Photon SDK前往下载v3.1版本的SDK。下载完毕后解压可得到deploy、doc、lib和src-server共4个文件目录。deploy是各个平台下的photon服务器可执行文件。doc是帮助文件。lib是已经编译好的dll文件,部署服务器时使用。src-server里面是游戏demo源码。运行PhotonControl.exe文件运行PhotonControl.exe,在工具栏中找到photon服务器的图标,右键选择Default-&Start as application(不同版本Photon可能不一样,有的是Default)运行Photon服务器。成功后photon服务器图标是蓝色的,否则就是运行异常。
设置Photon配置文件我们可以通过deploy中不同平台目录下的PhotonServer.config配置文件来修改Photon服务器的配置。在配置文件中,default节点里可以设置传输的最大消息尺寸、最大/最小超时时限。在UDPListener和TCPListener节点中可以设置监听UDP和TCP连接的ip地址和通信端口。在Websocket节点中可以进行Websocket通信的一些设置。Application节点比较重要,每个Application的name在通讯接口方法调用时要用到。
检查Windows系统里的端口和防火墙设置启动Default-&Run TestClient ,运行客户端测试程序,如果在运行过程中弹出Windows防火墙提示,就需要在Windows防火墙里开放了Photon配置文件中设定的协议端口。如果没有弹出提示,必要时需要在Windows防火墙高级设置中手动创建入站规则。因为在这种情况下有可能防火墙是针对Photon服务器程序创建的入站规则,不限制使用端口。而我们可以手动创建针对UDP和TCP通信的特定端口的入站规则。
Photon异常排查当我们启动PhotonControl.exe后,点击图标中的Default-&Start as application,运行一段时间服务器停止,图标变为灰色,说明Photon服务器运行异常。我们需要先检查一下Photon服务器的端口设置。如果排除了端口和防火墙设置的影响,我们可以通过日志文件Photon-Default查看是否是启动Photon服务器过程中发生了异常。如果排除了Photon服务器启动异常,就需要打开各个游戏服务端程序的日志文件查看是哪个游戏服务器程序异常。
Photon客户端开发
Unity 3D连接Photon服务器导入Photon3Unity3D.dll到U3D工程的Assets/Plugins目录下。编写客户端脚本文件与Photon服务器通信,继承IPhotonPeerListener接口并实现OnStatusChanged接口方法。在Update方法中调用PhotonPeer对象的Service方法就可以与Photon服务器通信了。只有调用Service方法,我们才能正常与服务器进行连接和通信。
向Photon服务器发送请求首先需要编写一个SendMessage函数,从客户端向服务器发送请求,使用PhotonPeer对象的OpCustom方法来发送请求。同时需要实现OnOperationResponse和OnEvent接口方法来处理服务器返回的结果。
处理Photon服务器返回的响应
实现OnOperationResponse函数
可以通过OperationCode分析服务器返回响应的类型。
编写函数处理Photon服务器返回的消息
自定义事件
实现OnEvent函数
设定游戏操作枚举
传输自定义数据参数
Photon服务器和Unity 3D客户端的通信机制
发送请求到Photon服务器
处理Photon服务器返回的响应
完成游戏房间的操作
实现自定义事件
Photon 服务端编写
在编写自己的Photon服务器的时候,需要使用到Photon SDk提供的ExitGamesLibs.dll、Photon.SocketServer.dll、PhotonHostRuntimeInterfaces.dll这三个dll文件。复制dll到自己创建的类库项目,并在C#工程中添加引用。确认添加的引用的“复制本地”属性为True,如果不为True,将“嵌入互操作类型”由True改为False。在Photon服务器目录的deploy目录下创建自己相关项目的服务器目录,修改类库项目的输出路径为这个目录。还需要修改PhotonServer.config文件,添加自定义服务器的Application节点。实现ApplicationBase接口(解析引入Photon.SocketServer、实现抽象类自动导入抽象方法)
创建Application类
创建一个Photon游戏服务器项目
创建Application类
实现LiteApplication接口:需要引入Lite.dll文件。实现CreatePeer接口
创建Peer类 Peer类负责创建和每个客户端的会话并处理每一个客户端的请求。
接收和处理客户端的请求
自定义枚举,实现OnOperationResponse函数 除了LitePeer父类里定义的基于房间的操作类型,还可以自定义操作类型。
广播自定义事件
Photon通信协议
Photon传输数据类型的限制在Photon的官方文档中给出了Photon通讯协议支持的数据类型,Photon只能传输基本的数据类型,并不支持传输自定义的对象类型,但是可以通过序列化和反序列化的方式来实现对象传输。客户端和服务端要保持相同的序列化和反序列化方法,服务端要注册自定义对象。
序列化和反序列化方法面对多类型多成员的对象的序列化工作,可以使用第三方的序列化工具,就可以不必对每一类对象都编写一套序列化和反序列化方法。可以采用的第三方组件包括NewtonSoft.Json.dll和protobuf-net.dll。两者的区别是:NewtonSoft是将自定义类型转化为JSON字符串,Protobuf将自定义类型直接转化为byte数组。对于同样大小的自定义类型来说,protobuf转化后数据量更小,传输效率也更高,因此也更加常用。
Protobuf插件Protobuf的优点:1)性能好,效率高 2)代码生成机制,数据解析类自动生成 3)支持向后兼容和向前兼容。4)支持java、C++、C#等多种编程语言。
在Photon服务端使用Protobuf
在Unity 3D客户端使用Protobuf
Photon MMO
PhotonView当场景中的任何一个组件被加上PhotonView时,会动态地在多个客户端之间同步组件的数据和状态。
多场景公用Photon对象在多个场景如果都通过实例化Peer对象,并建立与Photon服务器的连接,及其消耗资源,可以采用共享静态Photon连接对象的方式,或者把连接功能提取出来做成一个组件,采用DontDestroy方法在加载时保留原有连接,类似连接池的思想。
PUN VS. Photon服务器原生插件PUN是更接近Unity Networking组件的一种对Photon原生功能的封装。如果对于UN熟悉,可以使用PUN插件,如果没接触UN,直接使用Photon服务器原生插件进行开发。
还在整理和补充中...
0岁产品经理分享给朋友:通用代码: <input id="link4" type="text" class="form_input form_input_s" value="" />复 制flash地址: 复 制html代码: <input type="text" class="form_input form_input_s" id="link3" value="" />复 制分享视频到站外获取收益&&手机扫码分享视频二维码2小时内有效unity3d使用photon cloud引擎 快速单机游戏改网络游戏下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效unity3d使用photon cloud引擎 快速单机游戏改网络游戏扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本
药品服务许可证(京)-经营- 节目制作经营许可证京字670号 请使用者仔细阅读优酷、、Copyright(C)2017 优酷
版权所有不良信息举报电话:Photon是目前比较好用的游戏服务器。目前网上对于Photon的服务器讲解比较少,最近也对Photon做了初步的了解,做一个极其详细的入门。
首先就是得下载Photon咯
/en/OnPremise/Download 这个是服务器下载。(上传图片的功能崩溃了。。。)
这个服务器是有权限的,免费的有100人上限和30天免费,调试用的话,100人的还是很合算的。
/en/OnPremise/Dashboard& (得注册账号哦。。。)
这里有个比较好的教程 http://download.csdn.net/download/a36547 是免费的,下载就好(CSDN的)
/liusuqi/category/447143.html这个博客对Photon的讲解非常好
如果你能看懂教程就可以右上角了。
现在开始正题。在服务器的deploy中是配置所有服务器的,会看到有几个启动版本bin_Win32,bin_Win32_xp,根据自己的系统环境来选择。
我系统是win10选的就是bin_Win64 里面有个PhotonControl.exe就是运行服务器。双击启动它。
在你的系统右下角就会发现一个小圆圈,这个就是服务器啦!
右键它你会发现有个Photon instance:下面有个Default就是我们要用的服务器啦,上面的教程中这里是不同的,不过没差多少。
对了,下载下来的权限就放在这个bin文件夹,我的就是bin_Win64,弄完权限记得重启服务器啊。
下面我们就来写一下服务器代码。一个简单的用户登录
Photon用的C#我们就用VS写,我用的是VS2015
首先我们新建一个C#类库我们叫MyServer,让我们引入3个dll,在Photon的lib中
ExitGamesLibs.dll
Photon.SocketServer.dll
PhotonHostRuntimeInterfaces.dll
新建一个C#类我们叫MyPeer,继承PeerBase,然后重写函数,别忘了using
using Photon.SocketS
using PhotonHostRuntimeI
namespace MyServer
using System.C
public class MyPeer : PeerBase
Hashtable userT
public MyPeer(IRpcProtocol protocol,IPhotonPeer photonPeer) : base(protocol, photonPeer)
userTabel = new Hashtable();
userTabel.Add("123", "1234");
protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
//失去连线时候要处理的事项,例如释放资源
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
//取得Client端传过来的要求加以处理
switch (operationRequest.OperationCode)
case (byte)OpCodeEnum.Login:
string uname = (string)operationRequest.Parameters[(byte)OpKeyEnum.UserName];
string pwd = (string)operationRequest.Parameters[(byte)OpKeyEnum.PassWord];
if (userTabel.ContainsKey(uname) && userTabel[uname].Equals(pwd))
SendOperationResponse(new OperationResponse((byte)OpCodeEnum.LoginSuccess, null), new SendParameters());
SendOperationResponse(new OperationResponse((byte)OpCodeEnum.LoginFailed, null), new SendParameters());
然后我们再建一个C#类叫MyApplication,我们继承AppLicationBase,然后全部重写就好,每个函数的意思我都给出来了
using Photon.SocketS
namespace MyServer
public class MyApplication : ApplicationBase
protected override PeerBase CreatePeer(InitRequest initRequest)
//建立连线并回传给Photon Server
return new MyPeer(initRequest.Protocol, initRequest.PhotonPeer);
protected override void Setup()
//初始化GameServer
protected override void TearDown()
//关闭GameServer并释放资源
还有个Message是用来标识状态的,同样新建一个C#类叫Message
namespace MyServer.Message
enum OpCodeEnum : byte
Login = 1,
LoginSuccess = 2,
LoginFailed = 3,
Create = 250,
Join = 255,
Leave = 254,
RaiseEvent = 253,
SetProperties = 252,
GetProperties = 251
enum OpKeyEnum : byte
RoomId = 251,
UserName = 252,
PassWord = 253
&然后比较重要的一步,在VS中的解决方案中,我们右键我们的MyServer(C#类库名)打开属性,选择生成,把输出中的输出路径改为bin\
因为Photon就读取bin目录中的dll。
然后我们就生成服务器就好啦~~~
然后把我们的服务器MyServer中除了bin文件夹其他都可以删除,然后放到Photon中的deploy文件夹中,然后我们来配置一下Photon
打开deploy目录中的bin目录,我就打开bin_Win64中的PhotonServer.config,用VS打开即可
建议阅读PhotonServer.config文件中的注释,不会英语的可以用有道。很有帮助
我们用的是Udp的传输方式,Photon只有一个接听端口就是5055,所以防火墙不要封这个端口还有843,是Unity和Flash的一个接通端口所以也不要封,防火墙不会开固定端口的见/zh-cn/windows/open-port-windows-firewall#1TC=windows-7
然后我们要加一段代码在&Applications Default="Lite"&下面
&!-- MyServer Application --&
&Application
Name="MyServer"
BaseDirectory="MyServer"
Assembly="MyServer"
Type="MyServer.MyApplication"
ForceAutoRestart="true"
WatchFiles="config"
ExcludeFiles="log4net.config"&
&/Application&
然后保存即可。
这样我们服务器端就配置完成了,现在让我们打开Default中的Start as application,然后打开Open Logs 见到Server is running。。。表面服务器建立成功了。
然后就是Unity端了
我们新建一个工程,然后引入一个dll直接拖到Unity中就行Photon3Unity3D.dll 同样也在lib中。
让我们建一个C# Script 叫hotonSocket,同样在引用中导入Photon3Unity3D.dll
using UnityE
using ExitGames.Client.P
using System.Collections.G
public class PhotonSocket : MonoBehaviour,IPhotonPeerListener {
#region 单例
private static PhotonSocket _I
public static PhotonSocket Instance
get { return _I }
#endregion
private string //最好在Awake或Start中赋值,Unity 小问题,容易造成值不更改,还有最好写成私有
private string S //同上
private PhotonP
public ClientS
void Awake ()
_Instance = this;
address = "localhost:5055";
Server = "MyServer";
state = ClientState.DisC
peer = new PhotonPeer(this, ConnectionProtocol.Udp);
peer.Connect(address, Server);
public void SendMessage(byte Code,Dictionary&byte,object& param)
peer.OpCustom(Code, param,true);
void Update ()
peer.Service();
public void DebugReturn(DebugLevel level, string message)
public void OnEvent(EventData eventData)
public void OnOperationResponse(OperationResponse operationResponse)
switch(operationResponse.OperationCode)
case (byte)OpCodeEnum.LoginSuccess:
Debug.Log("login Success");
state = ClientState.LoginS
case (byte)OpCodeEnum.LoginFailed:
Debug.Log("login Failed");
state = ClientState.LoginF
public void OnStatusChanged(StatusCode statusCode)
switch(statusCode)
case StatusCode.Connect:
Debug.Log("Connect");
case StatusCode.Disconnect:
Debug.Log("DisConnect");
public enum ClientState : byte
DisConnect,
LoginSuccess,
LoginFailed
enum OpCodeEnum : byte
Login = 1,
LoginSuccess = 2,
LoginFailed = 3,
这样Unity的部分也完事了,就可以来测试啦,出现Connect的Debug就表面链接服务器成功,出现LoginSuccess就OK了。
以上的都是我们在教程中都能找到的部分,然后我们来说说教程中没有的Unity部分的address。
如果想局域网联机的就要找到你的本机内网IP,然后让address = 本机IP:5055 这样就OK了,
如果要想要外网链接呢有两种情况,一种你是用路由器的,也有两种方式,一种开DMZ主机,一种开虚拟服务器。
第一种DMZ主机,不建议用这种方式,他会把你的IP完全暴露在外网,不安全, address = 外网IP:5055
第二种虚拟服务器,这种方式就是开放部分端口,比较高端的路由器可以设置端口对端口,不高端的路由器只能指定端口,address = WAN口IP:5055
没有服务器的呢,下一个花生壳软件,他会给你一个免费的域名,然后挂在你的外网IP上然后 address = 花生壳域名:5055
阅读(...) 评论()

我要回帖

更多关于 unity photon pun 的文章

 

随机推荐