这里应该可以把common项目的输出路径设置为unity项目的Plugin文件夹。生成MyGameServer项目时由于引用了common项目,会同时编译common项目到MyGameServer的输出文件夹。这样就不用手动去拖拽common.dll到unity里了。
这里应该可以把common项目的输出路径设置为unity项目的Plugin文件夹。生成MyGameServer项目时由于引用了common项目,会同时编译common项目到MyGameServer的输出文件夹。这样就不用手动去拖拽common.dll到unity里了。
Mysql历史版本或者高版本的文档在这里https://dev.mysql.com/doc/
OperationCode OpCode;出错
depoly->counter,loadbalancing
bin_winxx 取决于你的电脑位数
事务
这节课应该算是客户端和服务端交互的核心内容了,要重点理解啊
客户端
1在客户端通过photonpeer建立连接(指定lisener和使用的协议)
2利用connect()方法向服务器发起请求
3service()需要一直调用
4新建一个test文件
5使用opcustom的方法(含有三个参数(1,字典数据,是否稳定))
服务器端
1.利用peerbase 建立一个对象
2.new 一个clientpeer对象
3.服务器端与客户端用clientpeer交互
不太理解为什么要加dontdestory()这个方法,因为既然已经确定instance==null,就一定执行唯一的游戏物体,为什么还要多加一句dontdestroy来指定不要销毁呢,不写这一句程序也不会去销毁这个游戏物体啊。
if else语句和if else if()语句的差别
如果是if...else if,则满足第一个if执行第一个if里的代码,如果不满足第一个if,而满足第二个if,则执行第二个if(即else if)的代码,如果都不满足,就不执行,如果后面有else(不带if的else),则只要前面的if和else if都没执行,就执行最后一个else,所以说这里的if 和if else语句是等价的同时进行的,而if...else 语句是先判断 if里面的条件再执行else里面的内容
那如果程序改成if else的结构会有什么影响呢?
如:我目前觉得程序的结构是这样
void Awake()
{
if(instance==null){
instance=null;
}
else(instance!=null){
Destroy(this.gameobject);return;
}
}
请问老师这样写会产生什么影响,在后期开发会发生什么后果?
通过字符串组拼的方式,传递参数
组拼有缺点,数量多时会有错误;
1.修改插入的sql语句
"insert into users(username,password) values(
"cxlvkee ,"234")";
int result=cmd.executeNonquery();
初始化:
1.引入命名空间
2.初始化,解析配置文件,添加解析映射文件
Configuration.Configure();按照默认路径解析。配置文件放在程序集根目录
1、建立公共项目Common,PhotonServer引入Common
2、生成Common.dll,复制到Unity项目里
1、修改程序集名字
2、引入MySql.Data和NHibernate程序包
3、改命名空间
PhotonServer服务器端开发学习笔记:
{
一、学前准备和注意事项
{
0.先要掌握基本的编程能力
1.先学习MySql数据库的基础课程
2.对VisualStudio和MySql的环境有个大致的了解
3.跟着实例敲代码
}
二、直接使用CSharp访问MySql数据库
{
1.引入MySql.data.dll程序集文件
2.引用MySql数据库访问类所在的命名空间
3.与MySql数据库建立测试连接
4.了解访问MySql数据库相关的类
{
MySqlConnection,
MySqlCommand,
MySqlDataReader
}
5.熟练掌握基本的增删改查语句
6.掌握防止Sql注入的编程方式
}
三、使用Nhibernate连接访问数据库的方式与MySql进行数据通信
{
1.引入MySql.data.dll程序集文件
2.引入Nhibernate.dll程序集文件
3.配置规范项目程序集名称和默认命名空间名称
4.添加一个Xml配置文件[nhibernate.cfg.xml]
{
用来配置当前引入Nhibernate的项目工程(需要去Nhibernate官网查看文档来进行配置项目)
需要根据不同的数据库来修改xml配置文件中的属性结点信息(跟项目走即可)
}
5.与数据库中的数据产生映射
{
1.数据库中的数据表对应CSharp中的一个数据模型类,每一个CSharp中的数据模型类又对应一个xml文件
2.根据数据库中的数据表构建CSharp中的数据模型类,根据CSharp中的数据模型类构建一个模型映射配置文件
3.数据模型映射配置文件
{
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="YaolongcolumnNhibernate"[要映射的数据模型类所在程序集]
namespace="YaolongcolumnNhibernate.Models">[要映射的数据模型类所在命名空间]
<class name="Userinfo" table="userinfo">[name->数据模型类名称,table->对应的数据库中的表明]
[id->为数据表中主键的映射 name->数据模型类中的名称,column->数据库中数据列的名称,type->对应的Nhibernate中的数据类型]
<id name="UserId" column="userid" type="Int32">
<generator class="native"></generator>[genrator->数据库中主键的自动增长类型]
</id>
[property->数据库中非主键的数据列映射配置,name->数据模型类中的名称,column->数据库中数据列的名称,type->对应的Nhibernate中的数据类型]
<property name="UserName" column="username" type="String"></property>
</class>
</hibernate-mapping>
ps:在映射的过程中,所有对应的数据类型都需要使用大写的形式
}
6.使用NHibernate解析项目中配置好的配置文件信息
{
6.1_引入两个命名空间:
{
using NHibernate;
using NHibernate.Cfg;
}
6.2_初始化解析配置文件信息
{
6.2.1_构建一个解析配置文件信息的类:
//构建Nhibernate解析配置文件信息的对象
Configuration configuration = new Configuration();
//初始化解析配置文件信息
configuration.Configure();
//将当前项目的程序集添加到配置文件的信息中去
configuration.AddAssembly("YaolongcolumnNhibernate");
}
6.3_获取会话工厂,准备与数据库沟通会话
{
6.3.1_从构建的解析配置文件信息的对象,调用->BuildSessionFactory(),获取一个构建好的会话工厂,返回值是ISessionFactory[会话工厂]。
6.3.2_与数据库展开会话
{
从获取到的会话工厂,调用->OpenSession(),获取一个展开的会话对象,返回值是ISession[展开会话的对象]。
}
}
}
}
}
Server=localhost;Database=mygamedb;User ID=root;Password=1234;
mySqlCommand()
数据库命令
try{
}catch{
}
try里的异常都会在catch里就会捕捉到
跟数据库交互:
1.直接写mysql接口
2.使用nHibernate
配置文件的名称为:hibernate.cfg.xml
Mysql
MySqlConnection com=new 连接数据
创建数据库中表的对应类:User
类中的字段必须为virtual
创建类与表的映射关系:User.hbm.xml,配置文件内容可参照官网中相关内容:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="FirstSolution" namespace="FirstSolution.Domain"> <class name="Product"> <id name="Id"> <generator class="guid" /> </id> <property name="Name" /> <property name="Category" /> <property name="Discontinued" /> </class> </hibernate-mapping>
修改后配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="MySQL"
namespace="MySQL.Model">
<class name="User" table="user">
<!--主键配置-->
<id name="Id" column="id" type="Int32">
<generator class="native"></generator>
</id>
<!--属性的封装-->
<property name="Account" column="account" type="String"></property>
<property name="Password" column="password" type="String"></property>
<property name="Name" column="name" type="String"></property>
<property name="Score" column="score" type="Int32"></property>
</class>
</hibernate-mapping>
将nhibernate.cfg.xml属性设置为始终复制,将User.hbm.xml属性设置为不复制-嵌入的资源