Unity联网插件(PUN)

本文介绍了 Photon Engine,它是 ExitGames 公司的世界领先独立网络引擎,特别适合 Unity 的网络游戏开发。文章详细阐述了 PUN 的优势,并提供了 PUN2 的下载和配置步骤,包括在 Photon Cloud 中国区的注册与应用创建。通过实例展示了如何在 Unity 中实现网络连接,包括连接状态、设置 AppID 和服务器参数。最后,文章通过创建并运行一个简单的网络连接脚本,验证了 Photon 的工作原理,强调了场景发布的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PUN简单介绍:

Photon引擎属于Exit Games公司,是世界排名第一的独立网络引擎和多人通信平台,适用于独立开发者和专业工作室

Photon引擎具有通信快速、高可靠性、使用方便、容易扩展等优点

针对Unity网络游戏开发,Photon引擎是首选服务器引擎

PUN网络连接状态:

PUN具体操作:

在官网中下载PUN2,导入Unity(Unity版本必须在2018以上)

Multiplayer Game Development Made Easy | Photon Engine Global cross platform multiplayer game backend as a service (SaaS, Cloud) for synchronous and asynchronous games and applications. SDKs are available for android, iOS, .NET., Mac OS, Unity 3D, Windows, Unreal Engine, HTML5 and others.https://www.photonengine.com/en-US/Photon

先在光子中注册,注册后点这个创建一个应用程序

 然后填写名字和项目类型,我这里选的是PUN

 创建好后会出现这个

 

然后去申请中国区:光子云PhotonCloud | 光子引擎photonengine中文站 | 光子引擎photonengine中文站免费申请使用,无需安装,一键部署的光子云PhotonCloud的相关介绍。特性,国内价格。https://vibrantlink.com/photoncloud/

 

 这里的appid和appid类型要与刚才创建的程序类型一致!!!appid就是下面这个,类型就是PUN

 申请写完后提交,会在1-2个工作日内给回复,然后回到Unity,选择Photon-PhotonUnityNetworking-Resources-PhotonServerSettings修改一些东西

App id PUN填入刚刚申请中国区的App ID

Fixed Region这个改成cn

Server加入:ns.photonengine.cn

Protocol这里改成Tcp 

然后新建一个脚本,test.cs

先导入using Phoon.Pun

把里面继承的MonoBehaviour改成MonoBehaviourPunCallbacks

using Photon.Pun;
using Photon.Realtime;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class test : MonoBehaviourPunCallbacks
{
    string version = "1.0";
    bool isconn = false;
    public Button btn;
    private void Awake()
    {
        PhotonNetwork.AutomaticallySyncScene = true;
    }
    void Start()
    {
        //Connect();
        btn.onClick.AddListener(Connect);
    }
    public void Connect()
    {
        if (PhotonNetwork.IsConnected)//判断是否连接到Photon服务器
        {
            PhotonNetwork.JoinRandomRoom();//随机加入房间
            Debug.Log("111");
        }
        else
        {
            PhotonNetwork.GameVersion = version;//设置版本号
            isconn = PhotonNetwork.ConnectUsingSettings();//连接Photon服务器
            Debug.Log("aksjhgd");
        }
    }
    //是否连接上主客户端
    public override void OnConnectedToMaster()
    {
        Debug.Log("连接上客户端");
        if (isconn)
        {
            PhotonNetwork.JoinRandomRoom();//随机加入一个房间
        }
    }
    public override void OnDisconnected(DisconnectCause cause)
    {
        Debug.Log("没有连接上客户端");
    }
    //是否加入到随机房间
    public override void OnCreatedRoom()
    {
        Debug.Log("随机加入到房间");
        if (PhotonNetwork.CurrentRoom.PlayerCount == 1)
        {
            PhotonNetwork.LoadLevel("SampleScene");
        }
    }
    public override void OnJoinRandomFailed(short returnCode, string message)
    {
        Debug.Log("随机加入房间失败");
        PhotonNetwork.CreateRoom("One", new RoomOptions() { MaxPlayers = 0 });//创建房间(0代表没有人数限制)
    }
}

写完后要再建一个场景test,在test场景中建一个Button,然后把脚本挂在摄像机,把Button拖入脚本的公开按钮中,运行场景后,点击按键,可以看到出来一堆东西,说明我们成功了

 重要的事情说三遍,场景一定要发布!一定要发布!一定要发布!!!不然就会报错

导入插件时有可能会报一个错,打开Assets-Photon-PhotonLibs-netstandard2.0-Photon3Unity3D

将它改成Intel64-bit报错就消失了

有了这个可以做很多东西,联网的游戏、专属于自己的聊天室等等等,后期会继续更新!

Unity用来和服务器通信可以用原生的WWW,但是WWW所提供的功能并不多,不能满足很多需求。因此我们可以自己封装Http协议来满足更多的需要。在Unity游戏里使用Http协议的情况很常见,因为它操作简单,便于实现,经常用在登陆等场景下,还例如下载上传一些资源。如果想要实现进一步的控制,就要使用Socket并定义自己的协议了。 使用这个插件还有一个重点就在跨平台,因为用C#自己的HttpWebRequest也能实现。 下面简要介绍一下HTTP和Socket: Http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;慢,不太适合游戏中实时数据的传输。数据量。 由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。 Socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息~~具体心跳消息格式是开发者自己定义的。 BestHttp是基于RFC 2616的Http/1.1实现,支持几乎所有Unity支持的移动和主机平台,具体请见官方文档。 以下介绍主要来自于官方文档,会有一些补充信息。 BestHttp的目标是成为一款充分发挥Http/1.1潜力的,易用并且强大的Unity插件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故渊9527

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值