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
- SQL SERVER几种数据迁移/导出导入的实践
- dom4j 使用总结
- 快速对表的某字段赋递增的数值
- SQL SERVER修改函数名引起的问题
- SQL Server安全(1/11):SQL Server安全概述
- SQL Server安全(2/11):身份验证(Authentication)
- SQL Server安全(3/11):主体和安全对象(Principals and Securables)
- 在SQL Server里如何进行页级别的恢复
- 你可能不知道的字符比较中的“秘密”
- c++实现简单计算器
- re模块(正则表达式)
- Python学习——collections系列
- 为stackGan一个工程创建一个虚拟环境,python 2.7 tensorflow0.12-tensorflow 1.01
- linux 普通操作,查看资源使用情况
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 0802-Cloudera Data Center7.1.3正式GA
- 2017,科学使用strace神器(附代码,举栗子)
- kubernete编排技术四:Job和CronJob
- Go 视图模板篇(二):模板指令
- go语言学习(五):通道的用法
- PHP无锁内存nosql---Yac的实战
- 0803-什么是Apache Ranger - 5 - Hive Plugin
- 2017年的golang、python、php、c++、c、java、Nodejs性能对比[续]
- go语言学习(四):数组和切片
- 初识ABP vNext(4):vue用户登录&菜单权限
- 2017 从上到下打印树新解法
- 基于Go的websocket消息服务
- go语言学习(三):源码文件
- 一个比ack速度快n倍的代码搜索工具: ag
- 版本命名标准:语义化 2.0.0