KBEngine初见(二)

时间:2021-08-11
本文章向大家介绍KBEngine初见(二),主要包括KBEngine初见(二)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

话接上回。这次做一个注册、登录流程。

关于数据库。在 kbengine-2.5.12\kbe\res\server\kbengine_defaults.xml 文件中配置好之后可以不用创建数据库,KBEngine 引擎会自动创建数据库,并根据实体来映射表,在此不再赘述。 

首先我们回到 unity ,新建一个 unity 项目。

在当前场景下新建两个 文本输入框(input Field) ,分别命名为 account 和 pwd (命名可以根据自己的喜好来,后面别忘记就可以),再创建两个 按钮(Button) ,一个是注册,一个是登录。

因为我先做过一遍了,所以控件会多几个,不过无需担心,后面会一一补全。

将上一篇中生成的引擎插件层(kbengine_unity3d_plugins 文件夹)放到 Assets 文件夹中。

然后在 Assets 文件夹下创建一个 Script 文件夹,用来存放我们自己写的脚本,当然也可以不创建,主要为了方便管理。

在 Script 文件夹下新建一个新的脚本,命名为 ClientApp

代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using KBEngine;

public class ClientApp : KBEMain
{
    
}

这里引用了命名空间 using KBEngine; 和继承了 KBEMain ,然后回到 unity ,在当前场景中创建一个空物体,命名为 ClientApp ,然后将 ClientApp 脚本挂载上去,

挂载之后的属性保持默认就可以。 

然后我们开始登录和注册事件。在 Script 文件夹下新建 ClientLogin ,代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using KBEngine;
using System;
using UnityEngine.UI;
using System.Text;
using UnityEngine.SceneManagement;

public class ClientLogin : MonoBehaviour
{
    public InputField account;
    public InputField pwd;
    public Button login;

    // Start is called before the first frame update
    void Start()
    {
        DontDestroyOnLoad(transform.gameObject);

        //registerOut 监听插件层抛出的事件
        //onConnectionState 、 onLoginFailed 这两个方法在插件层都有默认注册
        KBEngine.Event.registerOut("onCreateAccountResult", this, "onCreateAccountResult");
        KBEngine.Event.registerOut("onConnectionState", this, "onConnectionState");//监听 onConnectStatus 事件, this 是指在此方法里面接受返回数据, 接受方法为 onConnectStatus
        KBEngine.Event.registerOut("onLoginFailed", this, "onLoginFailed");
    }

    public void onCreateAccountResult(ushort retcode, byte[] datas)
    {
        if (retcode != 0)
        {
            print("createAccount is error(注册账号错误)! err=" + KBEngineApp.app.serverErr(retcode));
            return;
        }
        else
        {
            print("createAccount is successfully!(注册账号成功!)");
        }
    }  public void onConnectionState(bool status)
    {
        if (!status)
            print("服务器连接失败");
        else
            print("服务器连接成功");
    }

    public void onLoginFailed(uint s, object o2)
    {
        print("登录失败:" + s + "," + Encoding.UTF8.GetString((byte[])o2));

    }

    public void onRegist()
    {
        //UI=>插件层=>服务器
        //fireIn 是向 kbengine 插件层抛出事件。当点击按钮时,触发事件。
        // createAccount 在插件层有注册事件,是 KBEngine 自带的事件
        KBEngine.Event.fireIn("createAccount", account.text, pwd.text, Encoding.UTF8.GetBytes("kbengine_test"));
    }

    public void onLogin()
    {
        //UI=>插件层=>服务器
        //fireIn 是向 kbengine 插件层抛出事件。当点击按钮时,触发事件。
        // createAccount 在插件层有注册事件,是 KBEngine 自带的事件
        KBEngine.Event.fireIn("login", account.text, pwd.text, Encoding.UTF8.GetBytes("kbengine_test"));
    }

    // Update is called once per frame
    void Update()
    {

    }
} 

之后我们回到 unity

新建空物体,命名为 ClientLogin ,将 ClientLogin 脚本挂载上去,然后将 account 、pwd 、 login 三个空间依次拖入

 再给 login 按钮注册单击事件,将空物体 ClientLogin 放入,选择 onLogin 方法。

 给 regist 按钮注册单机时间,将空物体 ClientLogin 放入,选择 onRegist 方法。

 再新建一个场景,命名为 02 。

然后 菜单栏 文件 => 生成设置,将两个场景一次拖入,然后关掉。

接下来打开服务器,如下图

双击 start_server.bat 文件,会出现九个窗口 

当出现九个窗口中都出现  时,代表服务器已经开启,切换到 unity ,点击播放

 输入账号密码点击登录

 点击注册

点击登录

到此结束

 如果文章中有任何错误,请留言告诉我,谢谢。

原文地址:https://www.cnblogs.com/nihaojack/p/15124934.html