KBEngine遊戲伺服器(三)——製作自己的登陸客戶端
一、開啟伺服器
參考專欄上一篇文章,開啟那個MMO的伺服器
二、建立一個新的Unity工程,匯入外掛
將上一篇文章提過的unity工程裡的Plugins資料夾下的所有檔案,拷貝到新專案的Plugins資料夾下。
三、在Unity場景中建立ClientApp
建立一個空物體名為ClientApp,建立一個指令碼名為ClientApp,將指令碼掛在空物體上,指令碼程式碼如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using KBEngine;
public class ClientApp : KBEMain {
}
ClientApp繼承了KBEMain,KBEMain是KBEngine已經寫好的外掛的入口模組,在這個入口中安裝了需要監聽的事件(installEvents),同時初始化KBEngine(initKBEngine)。
點選空物體ClientApp,即可在Inspector面板上看到一些相關配置,一律使用預設的即可,不用修改。
四、製作相關UI
新增一個Input Field名為name,下面的Placeholder的Text元件內容改為“登入名..”;
新增一個Input Field名為psw,下面的Placeholder的Text元件內容改為“密碼..”;
新增一個Button名為login,下面的Text的Text元件內容改為“登陸”;
五、編寫登陸程式碼
建立指令碼名為LoginCtrl,程式碼如下:
using System.Collections; using System.Collections.Generic; using UnityEngine; using KBEngine; using UnityEngine.UI; using System; public class LoginCtrl : MonoBehaviour { public InputField name; public InputField psw; // Use this for initialization void Start () { DontDestroyOnLoad(this.gameObject); /* 註冊監聽由kbe外掛丟擲的事件。 */ KBEngine.Event.registerOut("onConnectionState", this, "onConnectionState");//伺服器連線狀態 KBEngine.Event.registerOut("onLoginFailed", this, "onLoginFailed");//登入失敗事件 } //伺服器連線狀態回撥 public void onConnectionState(bool success) { print("onConnectionState----------"); if (success) print("Login Successfully!"); else print("Login Error!"); } //登入失敗事件回撥 public void onLoginFailed(UInt16 s) { print("Login Failed!"); } //登陸按鈕回撥 public void onLogin() { print("user's name is :"+ name.text); print("user's password is :" + psw.text); KBEngine.Event.fireIn("login", name.text, psw.text, System.Text.Encoding.UTF8.GetBytes("KBEngine")); } }
需要比較注意的是fireIn和registerOut後面的eventName,寫錯的話,就得不到想要的回撥觸發了,至於eventName的定義和註釋,我全域性搜沒有找到,猜測是在伺服器原始碼裡定義的。而LoginCtrl裡的程式碼,都是可以在上一篇文章提到的unity專案中的UI.cs裡找到的。另,新舊版本的事件名似乎是有些不同,我看一些部落格上有個事件名叫onConnectStatus,而我下載的版本這個事件應該是叫onConnectionState。
六、登陸系統配置
建立一個空物體LoginCtrl,將LoginCtrl.cs掛上去,將第四點裡面的UI拖過去
七、登陸
使用你在上一篇文章中註冊的賬號登陸,點選按鈕能看到你print的文字“Login Successfully!”
如果忘記使用者名稱,可以開啟MySQL WorkBench,右鍵kbe-Tables-kbeaccountinfos,點選select rows檢視