1. 程式人生 > 其它 >KBEngine遊戲伺服器(三)——製作自己的登陸客戶端

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檢視