PUN简单介绍:

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

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

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

PUN网络连接状态:

android unity通信 unity 通信插件_ide

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

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

android unity通信 unity 通信插件_unity_02

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

android unity通信 unity 通信插件_unity_03

 创建好后会出现这个

android unity通信 unity 通信插件_android unity通信_04

 

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

android unity通信 unity 通信插件_unity_05

https://vibrantlink.com/photoncloud/

android unity通信 unity 通信插件_ide_06

 

android unity通信 unity 通信插件_服务器_07

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

android unity通信 unity 通信插件_服务器_08

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

android unity通信 unity 通信插件_android unity通信_09

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拖入脚本的公开按钮中,运行场景后,点击按键,可以看到出来一堆东西,说明我们成功了

android unity通信 unity 通信插件_ide_10

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

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

android unity通信 unity 通信插件_ide_11

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

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