Lua框架写登录注册与服务器实现交互+场景跳转+背景移动
C# 服务器
using SimpleFramework.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SimpleFramework.Utility;
namespace SimpleFramework.Message
{
///<summary>
///注册
///</summary>
classRegisters : IMessage
{
//创建字典存数据
publicstatic Dictionary<string, string> dic = new Dictionary<string, string>();
publicvoid OnMessage(ClientSession session, ByteBuffer buffer)
{
byte b =buffer.ReadByte();
ProtocalType type =(ProtocalType)b;
switch (type)
{
caseProtocalType.BINARY:
//传入方法
OnBinaryMessage(session,buffer);
break;
}
}
privatevoid OnBinaryMessage(ClientSession session, ByteBufferbuffer)
{
Console.WriteLine("注册请求123");
string id =buffer.ReadString();
string pwd = buffer.ReadString();
//实例化ByteBuffer 类
ByteBuffer bb = new ByteBuffer();
bb.WriteByte((byte)ProtocalType.BINARY);
Console.WriteLine("123456");
//判断字典中没有键 就提示注册成功
if (!dic.ContainsKey(id))
{
bb.WriteString("1");
bb.WriteString("注册成功");
//添加到字典中
dic.Add(id,pwd);
}
//否则就提示注册失败
else
{
bb.WriteString("0");
bb.WriteString("注册失败");
}
//发送
SocketUtil.SendMessage(session,Protocal.Registers, bb);
Console.WriteLine("发送成功");
}
}
}
using SimpleFramework.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SimpleFramework.Utility;
namespace SimpleFramework.Message
{
///<summary>
///登录面板 继承IMessage
///</summary>
classLogins : IMessage
{
publicvoid OnMessage(ClientSession session, ByteBuffer buffer)
{
byte b =buffer.ReadByte();
ProtocalType type =(ProtocalType)b;//协议类型 枚举值
switch (type)
{
//二进制
caseProtocalType.BINARY:
//调用方法 传入客户端对象和二进制对象
OnBinaryMessage(session,buffer);
break;
}
}
privatevoid OnBinaryMessage(ClientSession session, ByteBufferbuffer)
{
Console.WriteLine("收到客户端的请求");
//读取设置用户名和密码
string id =buffer.ReadString();
string pwd =buffer.ReadString();
Console.WriteLine(id+pwd);
//实例化ByteBuffer
ByteBuffer bb = new ByteBuffer();
//协议类型是二进制
bb.WriteByte((byte)ProtocalType.BINARY);
//判断注册里面的字典 是否存在此键
if(Registers.dic.ContainsKey(id))
{
string pass;
//尝试获取注册类字典的值
Registers.dic.TryGetValue(id,out pass);
//判断密码和之前存的是否一致
if (pass==pwd)
{
bb.WriteString("1");
bb.WriteString("登录成功");
}
//否则提示登录失败
else
{
bb.WriteString("2");
bb.WriteString("登录失败");
}
}
else
{
bb.WriteString("0");
bb.WriteString("用户名不存在");
}
SocketUtil.SendMessage(session,Protocal.Logins, bb);
}
}
}
Lua脚本
跳转场景
在unity建立脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace LuaFramework
{
publicclassSceneMgr : Manager
{
//静态加载方法 LoadScene方法名,在lua中会调用
publicstaticvoid LoadScene(int index)
{
SceneManager.LoadScene(index);
}
}
}
在CustomSettings 脚本中添加
_GT(typeof(SceneMgr)), //切换场景 管理类
在LuaHelper脚本中添加GetSceManager方法
主城
背景移动
设置图片背景
创建Material材质球
将图片拖进
创建panel 将Material 材质球拖进panel
添加脚本 BackMove 脚本
主城
背景移动
设置图片背景
创建Material材质球
将图片拖进
创建panel 将Material 材质球拖进panel
添加脚本 BackMove 脚本