1. 程式人生 > >【unity伺服器配置】PhotonServer2017搭建最新配置教程,Unity親測完美執行!

【unity伺服器配置】PhotonServer2017搭建最新配置教程,Unity親測完美執行!

最近題主在研究PhotonServer如何實現聯網功能時,在搭建伺服器與客戶端時遇到了許多小問題,題主在網上參照了siki老師的photonServer搭建教程,但是遇到的問題卻很多,原因是siki老師所講的版本是幾年前的版本,所以跟現在的新版本是有不同之處的,也由於題主沒有網路通訊的基礎,所以一直折騰了我不少時間,現在終於搞定了整個流程,現在我來為大家分享一下2017年最新的PhotonServer搭建教程。

客戶端 GameDemoChatClient

using ExitGames.Client.Photon;
using System;
using
System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GameDemoChatClient //客戶端 { class ChatServerListener : IPhotonPeerListener { public bool isConnected = false; public void DebugReturn(DebugLevel level, string
message) { } public void OnEvent(EventData eventData) //返回給客戶端時呼叫 { //throw new NotImplementedException(); } public void OnOperationResponse(OperationResponse operationResponse) //得到伺服器端的響應 { Dictionary<byte, object
> dict = operationResponse.Parameters; object v = null; dict.TryGetValue(1,out v); if (v == null) { Console.WriteLine("error code:" + operationResponse.ReturnCode + " error message:" + operationResponse.DebugMessage); } else { Console.WriteLine("從服務端得到資料:" + v.ToString()); } } public void OnMessage(object messages) { } public void OnStatusChanged(StatusCode statusCode) //客戶端連線服務端成功時呼叫 { switch (statusCode) { case StatusCode.Connect: isConnected = true; Console.WriteLine("連線成功!"); break; } } } class Program { static void Main(string[] args) { string localhost = "127.0.0.1:4530"; string ChatServer = "ChatServer"; ChatServerListener listener = new ChatServerListener(); PhotonPeer peer = new PhotonPeer(listener, ConnectionProtocol.Tcp); peer.Connect(localhost, ChatServer); //連結伺服器 Console.WriteLine("連線伺服器中......"); while (listener.isConnected == false) { peer.Service(); } Dictionary<byte, object> dict = new Dictionary<byte, object>(); dict.Add(1,"username"); dict.Add(2, "password"); //向服務端傳送請求 peer.OpCustom(1,dict,true); while (true) { peer.Service(); } } } }

服務端:ChatPeer

using Photon.SocketServer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PhotonHostRuntimeInterfaces;
using Photon.SocketServer.Rpc;

namespace ChatServer
{
    class ChatPeer : ClientPeer    //新版本這個繼承ClientPeer
    {
        public ChatPeer(InitRequest initRequest) : base(initRequest)
        {

        }

        //當客戶端發起請求的時候呼叫
        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
            Dictionary<byte, object> dict = new Dictionary<byte, object>();
            dict.Add(1, "sucess");
            OperationResponse response = new OperationResponse(1, dict);
            SendOperationResponse(response,sendParameters);         
        }

        protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
        {

        }
    }
}

PhotonServer.config配置檔案(重點)
這段程式碼寫在PhotonServer.config的語句塊裡,如圖:
這裡寫圖片描述

 <ChatServer DisplayName="Chat Server">
    <TCPListeners>
      <TCPListener
         IPAddress="0.0.0.0"
         Port="4530"
         OverrideApplication="ChatServer">
        >
      </TCPListener>
    </TCPListeners>

    <Runtime
          Assembly="PhotonHostRuntime, Culture=neutral"
          Type="PhotonHostRuntime.PhotonDomainManager"
          UnhandledExceptionPolicy="Ignore">
    </Runtime>
    <Applications Default="ChatServer">
    <Application
    Name="ChatServer"
    BaseDirectory="ChatServer"
    Assembly="ChatServer"
    Type="ChatServer.ChatServer"
                ></Application>
          </Applications>
    </ChatServer>

ChatServer

using Photon.SocketServer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ChatServer
{
  public  class ChatServer : ApplicationBase      //抽象類
    {
        protected override PeerBase CreatePeer(InitRequest initRequest)    //客戶端連線我們的服務端時呼叫這個方法
        {
            return new ChatPeer(initRequest);
        }

        protected override void Setup()
        {

        }

        protected override void TearDown()
        {
            throw new NotImplementedException();
        }
    }
}

配置完config檔案後,啟動PhotonServer,可以看到新的ChatServer的Application連線,啟動成功。
這裡寫圖片描述

再看看是否能接收客戶端的請求訊息:
這裡寫圖片描述

測試連線成功!

在這裡,我給大家展示一下常見的啟動錯誤,例如:

這裡寫圖片描述
這都是因為PhotonServer.config配置檔案不對的問題!,按照我的新版本的配置即可解決問題!

下面進行unity的測試:
首先在PhotonServer的lib檔案下面匯入Photon3Unity3D.dll檔案到unity中。
這裡寫圖片描述
這裡寫圖片描述
掛載到任意GameObject上
這裡寫圖片描述

PhotonServerEngine指令碼

using UnityEngine;
using System.Collections;
using ExitGames.Client.Photon;
using System.Collections.Generic;
using System.Runtime.CompilerServices;

public class PhotonServerEngine : MonoBehaviour,IPhotonPeerListener {

    private PhotonPeer peer;
    private bool isconnect = false;
    void Start()
    {
        peer = new PhotonPeer(this, ConnectionProtocol.Tcp);
        peer.Connect("127.0.0.1:4530", "ChatServer");//連線伺服器
    }

    void Update()
    {
        peer.Service();
    }

    void OnGUI()
    {
        if (isconnect)
        {
            if (GUILayout.Button("Send"))
            {
                Dictionary<byte, object> dict = new Dictionary<byte, object>();
                dict.Add(1, "username");
                dict.Add(2, "password");
                peer.OpCustom(1, dict, true);
            }

        }
    }

    public void DebugReturn(DebugLevel level, string message)
    {
        Debug.Log(level + ":" + message);
    }

    public void OnEvent(EventData eventData)
    {

    }

    public void OnOperationResponse(OperationResponse operationResponse)
    {
        Dictionary<byte, object> dict = operationResponse.Parameters;
        object val = null;
        dict.TryGetValue(1, out val);
        Debug.Log("getserver" + val.ToString());
    }

    public void OnStatusChanged(StatusCode statusCode)
    {
        switch (statusCode)
        {
            case StatusCode.Connect:
                isconnect = true;
                Debug.Log("Connect");
                break;
        }

    }
}

執行,成功連線到伺服器。
這裡寫圖片描述

歡迎你關注我的部落格。

相關推薦

unity伺服器配置PhotonServer2017搭建最新配置教程Unity完美執行

最近題主在研究PhotonServer如何實現聯網功能時,在搭建伺服器與客戶端時遇到了許多小問題,題主在網上參照了siki老師的photonServer搭建教程,但是遇到的問題卻很多,原因是siki老師所講的版本是幾年前的版本,所以跟現在的新版本是有不同之處的,

Primary_wind的專欄理論不懂就實踐實踐不會就學理論

專欄達人 授予成功建立個人部落格專欄

騰訊雲自己搭建的騰訊雲伺服器JavaEE環境

轉載地址:https://www.cnblogs.com/qlqwjy/p/8727487.html 感覺很專業的樣子,還沒有看完,更沒有實踐,找個機會實踐一下。 0.安裝SSH登入 1.生成公鑰對 ssh-keygen -t rsa -P ''   -P表示密

Linux伺服器下開發環境搭建安裝多個tomcat

上篇文章我們簡單介紹瞭如何在Linux環境下安裝單個的tomcat容器。 檢視如可安裝單個tomcat:https://blog.csdn.net/weixin_37519752/article/de

Spring 系列1. 搭建配置Spring與jdbc整合的環境

配置資料來源 <!-- 配置結點,可以使用佔位符 --> <context:property-placeholder location=“classpath:jdbc.properties”/> <bean id="dataSource" class="org.apach

微信開發02.搭建一個屬於自己的微信公眾平臺

tro 投票 新浪 關系 blank 訂閱 logs name 開發者 閱讀目錄 【網站開發】在新浪SAE上搭建一個博客 概述   公司年會上同事開發了一個微信企業號,包含了投票,抽獎,祝福墻功能,還開了一個Session,跟我們講了下公司的企業號開發過程和抽獎中獎

Django Series - 01以前用 1.6.11最近用 1.10.8現在又想換最新版本 2.1.2(探索中...)

Django Series(Django2.1.2 + Anaconda3) (一)安裝並配置 Django 環境 ||| 基於 Django 進行 Web 開發 (二)Django 基礎知識:語法、教程 (三)使用者管理模組:建立使用者、登入、退出 (四)資料的增刪改:使用者提交資

webpack結合React開發環境配置React開發環境配置之Webpack結合Babel8.x版本安裝的正確姿勢(Webpack最新版4.x結合Babel8.x環境配置步驟)

1. 安裝cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org【使用淘寶映象】2. 初始化package.json檔案cnpm init -y3. 安裝webpackcnpm install -d webpack webpack-

轉載加修改centos7.4安裝配置Zabbix3.4.8

安裝zabbix之前,請先安裝配置lamp環境。(上篇文章有寫) 參考:https://blog.csdn.net/SilenceViking/article/details/80168715   # vi /etc/selinux/config SELINUX=disa

大資料安全Apache Kylin 安全配置(Kerberos)

1. 概述 本文首先會簡單介紹Kylin的安裝配置,然後介紹啟用Kerberos的CDH叢集中如何部署及使用Kylin。 Apache Kylin™是一個開源的分散式分析引擎,提供Hadoop/Spark之上的SQL查詢介面及多維分析(OLAP)能力以支援超大規模資料,最初由eBay Inc. 開發並貢獻至開

軟體安裝/配置JDK環境安裝配置(Windows)

文章目錄 JDK安裝教程 JDKAPI地址 path變數和classpath變數的區別 JDK安裝教程 1.JDK下載地址: http://www.oracle.com/technetwork/java/javase/downloads

MAC日常使用—JDK安裝及配置

前言      由於工作變動,小編最近吃飯的傢伙也換成了 Mac 筆記本,下面來介紹下Mac本的使用。 正文 一、 安裝JDK     1、 首先,檢視電腦上是否安裝了JDK。      在window

MAC日常使用— MAVEN安裝及配置

前言      這次和大家分享下MAC電腦中maven的安裝及配置。 正文 1、下載Maven 2、maven 解壓到安裝目錄 3、開啟終端,輸入vim ~/.bash_profile,編輯bash

MyBatis原始碼分析TypeHandler解析屬性配置元素詳述及相關列舉使用高階進階

TypeHandler解析接著看一下typeHandlerElement(root.evalNode("typeHandlers"));方法,這句讀取的是<configuration>下的<typeHandlers>節點,程式碼實現為:private

C#伺服器開發之Web Service

 1 using System; 2 using System.Data; 3 using System.Configuration; 4 using System.Web; 5 using System.Web.Security; 6 using System.Web.UI; 7 using System.

Katalon學習六Katalon IE的配置

為了在IE上執行自動化測試,您需要以下設定: IE 7或以上版本: 對於所有可用區域,啟用保護模式必須相同(選中/未選中)。 要訪問此設定,請在Windows控制面板中選擇Internet選項卡,然後切換到Security選項卡: 此外,必須為IE 10或更高版本禁用增強保護模

oracle 客戶端linux下安裝配置oracle客戶端

要在伺服器linux 下連線使用oracle 必須先按裝oracle客戶端。下面來記錄下如何安裝成功。 一、安裝必要的庫gcc依賴 yum install zlib-devel bzip2-devel

JavaEE學習筆記Spring_03_IoC的其他配置方式AOP淺析

Spring_03 A.IoC的其他配置方式 1.xml+Annotation bean package org.wpf.spr_01; import org.springframework

Python爬蟲有道翻譯最新爬蟲教程帶GUI應用介面2018年3月18日實測可用

最新的有道翻譯爬蟲程式碼,包含應用程式介面,更新於20180318import urllib.request import urllib.parse import json import time import gzip import random import hashli

以太坊本地搭建Ethereum私有網路

[email protected]:~$ sudo apt-get install software-properties-common 正在讀取軟體包列表... 完成 正在分析軟體包的依賴關係樹 正在讀取狀態資訊... 完成 software-properties-co