unity3d使用mysql数据库输入中文显示乱码怎么解决 |
您所在的位置:网站首页 › mysql输入不了中文字符 › unity3d使用mysql数据库输入中文显示乱码怎么解决 |
① 首先把MySQL的服务停掉 在运行窗口输入:net stop mysql ② 把服务器和客户端的字符集改成自己想用的字符集:GB2312或是utf8等…… 具体 *** 作为:打开mysql安装目录下的myini.tet; 找到default-character-set,将其改为自己想用的字符集:GB2312或... 你的数据已经保存在数据集ds中了. 可以通过debug.log()或print() 函数显示在console窗体上以供调试. 这两个函数是等价的. 下面是接着你的代码, 显示数据的示例: void Start () {//省略... adapter.Fill(ds) DataTable tbl = ds.Table[0] foreach(DataColumn col in tbl.Columns) debug.log(col.ColumnName) } 本文将对NHibernate数据进行简单封装,方便在PhotonServer服务器中进行调用 [csharp] view plain copy using NHibernate using NHibernate.Cfg using MyGameServer.Domain using NHibernate.Criterion using System.Collections.Generic namespace MyGameServer.Helper { public static class NHibernateHelper { private static ISessionFactory sessionFactory = null private static ISession session = null public static ISession GetSession { get { if (sessionFactory == null) { Configuration cfg = new Configuration() //解析固定路径配置文件nhibernate.cfg.xml cfg.Configure() //映射目标程序集 解析映射文件 Student.xml ...... cfg.AddAssembly(typeof(Student).Assembly) //获取会话对象 sessionFactory = cfg.BuildSessionFactory() } session = sessionFactory.OpenSession() return session } private set { } } //添加行 public static void AddDataT(T t) { using (ISession session = GetSession) { using (ITransaction transaction=session.BeginTransaction()) { GetSession.Save(t) transaction.Commit() } } } //添加列 public static void RemoveDataT(T t) { using (ISession session = GetSession) { using (ITransaction transaction = session.BeginTransaction()) { GetSession.Delete(t) transaction.Commit() } } } //通过ID获取对象 public static T GetDataByIdT(int id) { using (ISession session = GetSession) { using (ITransaction transaction = session.BeginTransaction()) { T t = session.GetT(id) transaction.Commit() return t } } } /// summary /// 通过名称获取对象 /// /summary /// typeparam name="T"需要获取的对象/typeparam /// param name="dataBaseName"在数据库中的列名称/param /// param name="targetName"获取对象的目标名/param /// returns/returns public static T GetDataByNameT(string dataBaseName, string targetName) { using (ISession session = GetSession) { T t = session.CreateCriteria(typeof(T)).Add(Restrictions.Eq(dataBaseName, targetName)).UniqueResultT() return t } } /// summary /// 得到表内的全部对象 /// /summary /// typeparam name="T"/typeparam /// returns/returns public static ICollectionT GetAllUsersT() { using (ISession session = GetSession) { IListT ts = session.CreateCriteria(typeof(T)).ListT() return ts } } //查询是否有符合id和姓名相同的对象 public static bool VerifyUserT(params object[] arg) { using (ISession session = GetSession) { T t = session .CreateCriteria(typeof(T)) .Add(Restrictions.Eq(arg[0].ToString(), arg[1]))//类属性名 属性值 .Add(Restrictions.Eq(arg[2].ToString(), arg[3])) .UniqueResultT() if (t == null) { return false } return true } } /// summary /// 更新数据表 /// /summary /// typeparam name="T"数据表映射的对象/typeparam /// param name="t"/param public static void UpdateDataT(T t) { using (ISession session = GetSession) { using (ITransaction transaction=session.BeginTransaction()) { session.Update(t) transaction.Commit() } } } } } 在主函数调用 [csharp] view plain copy using NHibernate using NHibernate.Cfg using LJL.Domain using LJL.Helper namespace LJL { class Program { static void Main(string[] args) { Student sd = new Student { mID = 6, mName = "小张", mScore = 10 } NHibernateHelper.AddData(sd) } } } 运行程序,一切正常,打开SQLyog,在student数据表中添加一行数据 接下来就是在PhotonServer中调用,来实现与MySQL数据库交互 按图下将类、配置文件集成到类库中(注意需要修改下类和配置文件中的程序集及命名空间) 接下来就是在Unity3d游戏客户端中与PhotonServer通信进而访问本地数据库 在Unity3d客户端上创建UI(这里简单拖入输入框和按钮) 如下图创建脚本 我们的游戏有很多中请求(比如登入、注册请求等等) 所以都继承自BaseRequest [csharp] view plain copy using ExitGames.Client.Photon using System.Collections using System.Collections.Generic using UnityEngine public abstract class BaseRequest : MonoBehaviour { [HideInInspector] //该请求的 *** 作类型 public Collective.OperationMode operationMode = Collective.OperationMode.Default public virtual void Start() { } public abstract void OnOperationRequest() public abstract void OnOperationResponse(OperationResponse operationResponse) } 这里博主简单的做了一下登录请求 [csharp] view plain copy using ExitGames.Client.Photon using System.Collections using System.Collections.Generic using UnityEngine using UnityEngine.UI public class LoginRequest : BaseRequest { //用户名 private InputField mInputName //密码 private InputField mInputPassword public override void Start() { operationMode = Collective.OperationMode.LOGIN GameContext.GetInstance.AddRequest(this) mInputName = GameObject.Find("IDInputField").GetComponentInputField() mInputPassword = GameObject.Find("NameInputField").GetComponentInputField() //登录按钮点击事件 GameObject.Find("LoginButton").GetComponentButton().onClick.AddListener(() = { OnOperationRequest() }) } public override void OnOperationRequest() { GameContext.GetInstance.peer.OpCustom( (byte)this.operationMode, new Dictionarybyte, object { { (byte)Collective.ParameterMode.NAME, mInputName.text }, { (byte)Collective.ParameterMode.PASSWORD, mInputPassword.text } }, true ) } public override void OnOperationResponse(OperationResponse operationResponse) { Collective.OperationResult resultCode = (Collective.OperationResult)operationResponse.ReturnCode if (resultCode == Collective.OperationResult.SUCCESS) { //登录成功 Debug.Log("用户登录成功") } else if(resultCode == Collective.OperationResult.FAIL) { //登录失败 Debug.Log("登录失败") } } } 最后附上上篇博文GameContext脚本,在这里有些地方发生了更新 [csharp] view plain copy using System.Linq using System.Collections.Generic using UnityEngine using UnityEngine.UI using ExitGames.Client.Photon public class GameContext : MonoBehaviour,IPhotonPeerListener { /// summary /// 存储 *** 作类型与请求 /// /summary public DictionaryCollective.OperationMode, BaseRequest requestDic = new DictionaryCollective.OperationMode, BaseRequest() public PhotonPeer peer private static GameContext _instance public static GameContext GetInstance { get { if (_instance == null) { _instance = GameObject.Find("GameContext").GetComponentGameContext() } return _instance } } public void DebugReturn(DebugLevel level, string message) { } //接收服务器发来的事件 public void OnEvent(EventData eventData) { switch (eventData.Code) { case 0: //获取事件数据 object value = eventData.Parameters.FirstOrDefault(q = q.Key == 1).Value Debug.Log(value.ToString()) break default: break } } //接收响应数据(客户端发送了请求) public void OnOperationResponse(OperationResponse operationResponse) { BaseRequest request = requestDic.FirstOrDefault(q = q.Key == (Collective.OperationMode)operationResponse.OperationCode).Value if (request != null) { request.OnOperationResponse(operationResponse) } else { //获取响应数据失败 Debug.LogError("获取响应数据失败") } } //连接状态发送改变 public void OnStatusChanged(StatusCode statusCode) { Debug.Log("数据连接状态发生的改变:" + statusCode) } private void Start() { //传输协议UDP 、 通过Listener接收服务器端的响应 peer = new PhotonPeer(this, ConnectionProtocol.Udp) //连接本地服务器 peer.Connect("127.0.0.1:5055", "MYGameServer") } private void Update() { //和服务器实时保持数据连接 peer.Service() } private void OnDestroy() { if (peer != null peer.PeerState == PeerStateValue.Connected) { //断开连接 peer.Disconnect() } } public void AddRequest(BaseRequest request) { 欢迎分享,转载请注明来源:内存溢出 原文地址:https://outofmemory.cn/zaji/8610334.html |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |