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报错就消失了
有了这个可以做很多东西,联网的游戏、专属于自己的聊天室等等等,后期会继续更新!