Photon是個好東西,可是網上的入門教程太少了,特別是中文版的。小弟就本身琢磨吧,下面一系列是對Photon的研究過程,若有哪一個地方寫的有誤,望請前輩指教。html
首先去PhotonServer SDK下載服務器端SDK,須要登陸的,就先註冊一個帳號吧.
c#
解壓出來是四個文件windows
deploy:主要存放photon的服務器控制程序和服務端Demo服務器
doc:顧名思義,文檔編輯器
lib:Photon類庫,開發服務端須要引用的ide
src-server:服務端Demo源代碼this
今天搞一個客戶端鏈接服務器最簡單的程序,也算是hello world吧spa
客戶端以Unity3d 爲基礎,hello world包括配置服務器,客戶端,客戶端鏈接服務器,客戶端狀態改變。.net
第一步:配置服務器端3d
打開deploy文件夾,看到包含了不一樣平臺編譯出的Photon目錄,以「bin_」爲前綴命名目錄,選擇你的電腦對應的文件夾打開,看到PhotonControl.exe,運行後,能夠在windows右下角看到一個圖標,點擊圖標能夠看到photon服務器控制菜單,這個之後再作詳細介紹.
打開visual stadio,新建項目,選擇c# 類庫,應用程序名字叫作MyServer.
完成後,把咱們的Class1.cs,更名爲MyApplication.cs,做爲服務器端主類.而後在當前項目添加引用,連接到剛纔提到的lib文件夾目錄下,添加如下引用:
ExitGamesLibs.dll,Photon.SocketServer.dll,PhotonHostRuntimeInterfaces.dll
而後新建一個類:MyPeer.cs,寫法以下:
- using System;
- using System.Collections.Generic;
- using Photon.SocketServer;
- using PhotonHostRuntimeInterfaces;
-
- namespace MyServer
- {
- public class MyPeer : PeerBase
- {
-
- public MyPeer(IRpcProtocol protocol,IPhotonPeer photonPeer)
- : base(protocol, photonPeer)
- {
-
- }
-
- protected override void OnDisconnect(PhotonHostRuntimeInterfaces.DisconnectReason reasonCode, string reasonDetail)
- {
-
- }
-
- protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
- {
-
- }
- }
- }
接上,MyApplication.cs類這樣寫:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using Photon.SocketServer;
-
- namespace MyServer
- {
- public class MyApplication : ApplicationBase
- {
-
- protected override PeerBase CreatePeer(InitRequest initRequest)
- {
- return new MyPeer(initRequest.Protocol, initRequest.PhotonPeer);
- }
-
- protected override void Setup()
- {
-
- }
-
- protected override void TearDown()
- {
-
- }
- }
- }
完成後,在解決方案資源管理器中選中當前項目,打開屬性,選擇生成選項卡,把輸出路徑改爲bin\,而後就生成類庫吧
複製當前項目下MyServer文件夾到deploy文件夾下,刪除除了bin文件夾之外其餘全部文件和文件夾,而後文本編輯器打開deploy\bin_Win64\PhotonServer.config配置文件(個人是win7 64位機器,就選擇這個),添加如下配置:
- <Application
- Name="MyServer"
- BaseDirectory="MyServer"
- Assembly="MyServer"
- Type="MyServer.MyApplication"
- EnableAutoRestart="true"
- WatchFiles="dll;config"
- ExcludeFiles="log4net.config">
Name:項目名字
BaseDirectory:根目錄,deploy文件夾下爲基礎目錄
Assembly :是在生成的類庫中的bin目錄下與咱們項目名稱相同的.dll文件的名字
Type:是主類的全稱,在這裏是:MyServer.MyApplication,必定要包括命名空間
EnableAutoRestart:是不是自動啓動,表示當咱們替換服務器文件時候,不用中止服務器,替換後photon會自動加載文件
WatchFiles和ExcludeFiles
這段代碼放在<Default><Applications>放這裏</Applications></Default>節點下面
完成後保存,運行托盤程序deploy\bin_Win64\PhotonControl.exe,
運行它,若是托盤圖標沒有變灰,說明服務器運行成功。
下面開始編寫客戶端代碼,首先從官網下載Unity SDK
打開Unity3d編輯器,首先把Photon-Unity3D_v3-0-1-14_SDK\libs\Release\Photon3Unity3D.dll導入到Unity中,新建腳本TestConnection.cs,腳本代碼以下:
- using UnityEngine;
- using System.Collections;
-
- using ExitGames.Client.Photon;
-
- public class TestConnection : MonoBehaviour,IPhotonPeerListener {
- public PhotonPeer peer;
-
- void Start () {
- peer = new PhotonPeer(this,ConnectionProtocol.Udp);
- }
-
-
- void Update () {
- peer.Service();
- }
-
- void OnGUI(){
- if(GUI.Button(new Rect(Screen.width/2,Screen.height/2,200,100),"Connect")){
- peer.Connect("localhost:5055","MyServer");
- }
- }
-
- #region IPhotonPeerListener implementation
- public void DebugReturn (DebugLevel level, string message)
- {
-
- }
-
- public void OnOperationResponse (OperationResponse operationResponse)
- {
-
- }
-
- public void OnStatusChanged (StatusCode statusCode)
- {
- switch(statusCode){
- case StatusCode.Connect:
- Debug.Log("Connect Success!");
- break;
- case StatusCode.Disconnect:
- Debug.Log("Disconnect!");
- break;
- }
- }
-
- public void OnEvent (EventData eventData)
- {
-
- }
- #endregion
- }
把腳本綁定到場景中物體上,運行後能夠看到一個按鈕,點擊鏈接,若是鏈接成功會打印"Connect Success!".
Unity客戶端例子到這裏下載