粉丝538获赞1722

今天继续学习游戏服务端的开发,先把代码整理一下,网表变量改成玩家,这个变量会在以后开发中大量使用,趁早把变量名都构思修改好,免得以后修改起来麻烦。 这两天把数据库结构改了很多次,发色和发型分成了两个字段使用染发可以单独修改发色字段数据。性别这个数据在六点零之后,前面多一字结, 性别可以用两字结,数值放到高位字结,创建人物的时候增加一个发色,发型和发色偏移直都加上中括号, 不加括号是取四字结,中括号是取两字结,性别移到高位。有个比较简单的办法,就是从数据的性别这里向前一字结获取数据,三十三是性别,从三十二这里 取两字截值,存入数据库的性别就在高位字。截了数据表和读取语句的字段一定要对应原来的左边和顶边,改成了横标和竖标。又增加了一个纵坐标,也就是高度,纵坐标是显示其上下方向的维度, 竖坐标是显示器前后方向的维度,横坐标是显示器左右方向的维度。进入游戏读取数据还需要填充两个字段,客户端当初设计时候有很多是备用数据,没有用的数据也要有字段去填充位置。网表这个变量使用有很多处了, 还有刚才替换了编号,局部变量的时候是替换编号,等于网表只替换了一小部分,主要是担心有的编号不是用来获取账号美感。全局替换,其实当前页面并没有手工替换,是很 很难保证替换完的。换 xs 就不再需要编码转换了,用 sql、 mysql 等也都不需要转换编码。果然还有没有修改完的变量名。账号的编号改成账号更好理解一些。 还是不能编译提示到代码最后一行了。这个问题往往是语法错误,缺少某个符号。刚才主要是改数据表,这里比较多,这里有使用比较多的逗号来定义字段。先把修改这两行代码删除看看, 提示人物表不存在,应该就是这里问题。果然在发色和发型之间没有加逗号,而且有空格,就是两段文字没空格,还好总算编译通过了。数据库是今天才设计的,没有账号需要重新注册。提示账号已存在 数据库,难道没换吗?连接数据库的语句是在配置文件里,修改之前服务端是把 up 八编码转换成 gbk, 换其他数据库本来就是 gbk 编码就不行。把连接 xs 数据库的语句复制过来,粘贴到配置文件里的数据库,这里 只替换了语句,后面路径文件名没有改,这就导致使用 xs 语句连接 sclight。 不同数据库文件结构差别很大。这两个文件名一样,只是扩展名不一样。多加一个 m 就运行成功,也能注册了。再注册一个女号用来测试性别。字段 设计服务端要允许更换数据库类型。 xs 优点是速度快,不用安装配置, vivo 系统都能直接支持,无需安装驱动。换数据库之 后检查名字都是已存在,难道跟数据库有关系吗?这里判断名字长度小于四,返回零。上次测试角色起名都用的两个字,会不会是这里代码写反了, 测试结果还是一样。判断长度条件没触发,说明是下面查询数据库,这里的问题改成返回零看看。长度小于二能触发不能 只有一个英文小于二,但客户端不让用。想起来了,使用 sql 等数据库查询不到时,返回值负一, skled 查询不到返回零之前判断非零,改成大于零就可以了,查询到的结果都会大于零和负一, 这样修改代码就能兼容不同数据库。现在创建人物已经正常了,其他地方 还有判断查询数据是否存在应该也有问题。更严重的是进游戏出错人物列表,这里判断的是人物表的行数,这个不知道有没有受到影响。 把各判断查询数据的过程也都测试一遍,果然输入不存在的账号提示密码错误,正确的账号密码确实不影响登录。 创建女号比较容易分析数据的问题。创建过程没有问题,是进入游戏有问题。现在打开抓包工具,开始抓包分析,之前保存有正常进游戏的抓包记录, 打开数据记录登录请求,下面这个包,两个登录请求,下面这个应该叫进入游戏,这是同时发的两个包显示的 npc 对话,前面那个包不用管, 复制后面这部分清空记录,开始抓错误的数据包,同样复制后面这个包放在一起对比这两个包差别太大了,完全不是一个东西。检查进入游戏的代码,发现问题了。 数据表示动态数组必须要加括号才行,固定数组不加括号,访问零号成员 数据表不加括号访问的是表头结构,现在可以了,改这一点就能正常进游戏。今天重做数据库,也补全了几个表,数据具体是哪些我还要再看看。数据库 商店表,之前是二进制结构,数据没添加,现在改成数字编号字段添加修改方便。这个表只有两个字段,结构很简单,添加个商店表,然后加载读取整个表。还有一个数 据表看到了,就是经验表。经验表只用一个字段就行,等级是递增的,但是修改经验表没有等级对照也不行,总不能一行一行去数吧。还有一个字段, 可以设置每个等级的经验分配比例,有些时候需要控制玩家的升级速度,就可以调整指定等级的经验比例。登录账号还有问题,这个判断需要改,之前的数据库查询不存在是返回零,账号登录和登录请求都一样,需要修改, 但是我却改错了,之前是零,现在是负一。应该把等于零改成小于等于零, 而不是大于等于零。脑子不太好使了,测试过程就不用看了,肯定还是不对。返回负一要比返回零好判断,因为数据库 里有些数值他就可以是零,但也有负一的值,却很少用它做判断。现在只用改成小于等于零就可以兼容了。不同数据库都有不太一样的地方,设计开发程序尽量能兼容多种数据库。 现在登录账号已经可以正常判断了,更换了数据库改动的代码都算正常了。服务端的功能还没有实质性进展,但是整理和改进了代码的兼容性。 接下来就开始给服务端增加新功能,配置文件里添加一个分区和物品大小。分区不用解释了,物品大小是物品长度,准备要在创建人物的时候赠送装备了, 一级新手总得给把武器才能打怪升级。主要看一下琴师职业的武器是八开头,刺客、何乐师的武器都是 职业增加一,前五个职业武器都跟自己职业相匹配。新手赠送武器是根据职业进行匹配的,要研究一下各职业武器编号如何计算。刚才增加的两个配置文件比较特殊, 基本上不用修改的数据放在设置区段,经常改动的放到游戏区段程序上可以改。较物品长,要比物品大小好一点。这个数字是单个物品数据的长度较大小,会误解成物品的体积大小。 游戏区段都是数值,使用读取整数,现在设置区段也添加了数字的配置,也可以把这个函数写到一个程序段里,指定设置这个区段只用提交界名就行。把四个参数变成一个参数,能节省代码,后期还会有其他配置信息。 放到设置区段,这个程序段就叫他读数值好了,只用提交一个参数就能读取到数值,也不用文本转整数的函数了, 代码就写分区,等于读数值。分区获取物品长度的代码写法也是一样, 分区在注册账号的地方需要加上这种 sql 语句,要修改三个地方才能匹配。还有就是登录账号,这里要判断分区,查询语句不太一样,修改两个地方就行。人物表也有分区自断,这个很有用, 以往的人物表跟账号不在一个数据库,而且没有锁在分区和线路等字段,想要筛选分区,需要跨库查询关联账号。游戏里增加每个物品都要单独分配编号,很多物品是要卖掉、丢 器或者销毁的,那么这些分配的编号也就被浪费了。现在增加一个闲置数组作为编号容器,把不用的编号存进来,可以回收再利用。 在没有闲置编号时,就使用递增的序号,用物品号来存储当前序号的技术。 编号数是每个服务端批量分配的,数目多服务端同时运行,要保证编号的唯一性,可以在数据库里增加一个技术的字段。 数据库是公用的,某线读取时就增加技术,假设现在技术是一读取后立即改成三百, 一到三百的编号就只给这个服务器使用,别的端读取时就是三百,只能用三百以上。写这个代码时候在具体进行分析。现在想起来,公告内容之前是在数据库,但由于字段问题,转换编码会 出错。现在用 x s 数据库不用转换编码,那还是把公告内容恢复到数据库里。公告内容有一个字段用来控制是否滚动, 放到文本文件里,就没考虑这个功能。创建数据库可以使用执行 s、 q、 l 语句,菜单里也有新建表,但是 id 字段固定首字段必须是递增的,不重复整数值。公告的类型只有一和二这两种数字,使用单字节 tiny int 这种类型就可以。 splat 这种类型字段是负一百二十八到一百二十七,玩家等级是会超过一百二十七级还不够用。 xs 这种字段是零到两百五十五等级就够用。公告内容最大长度限制是一百二十字节,我把字段长度设置为一百三十六,足够使用。写好创建表的语句, 再点击执行 sql 语句,列表里就多出来公告这个表。数据库工具有导入和导出的功能,以前导出的公告列表还在, 复制到工具同目录下,右键导入即可。早期的数据库里有一个单行数据内容,只用于过滤敏感词汇,不如放配置文件,准备添加编号技术也是,单行单个字段占用一个数据表感觉也太浪费了, 仅仅是一个数字而已,放配置文件就行。配置文件也是各线路的服务端共用,那就开始写代码。添加一个程序段, 名字就叫物品编号。这个概念有点含糊,游戏里每种物品都是有特定的编号表示,这个应该叫物品序号就比较好理解。开发代码钱都要花很长时间,构思方案,就没有 那么多时间去构思变量函数名。获取物品序号时,先判断编号数等于零,如果是零,就去读取配置文件的物品号,然后把物品号增加三零零,再写入配置文件。写入配置文件要把数值转换成文字内容,把计算数值复制给文本,变量就会转文字。 写入配置文件。使用写入文字这个函数服务端没有使用配置文件的模块,模块的功能太全了,有很多用不上。 每次获取都要让物品号递增数值,然后返回物品号,编号数还应该递减。既然是每次获取的编号都是递增的,那么其实序号就可以从零开始 得到的。第一个序号就是一并写入三百,这是之前开发的赠送新手装备的代码。英文代码我看着也难懂, 太复杂了,只是看看需要再增加几个变量。这时候已经想到物品编号和序号要区分,起名叫总号,是还没想到用序号更合适。编号用来计算赠送武器的物品编号 就是职业乘以一亿,再加二十万零一,如果职业大于五,编号再增加一个亿,还需要申请一个内存缓冲区。装备自断还包括背包和行囊的数据。 申请的内存长度是单个物品长度,再乘以装备和背包物品的总数量。装备十五个,加上背包三十六个,再加行囊三十个, 可以使用中括号表达式来计算数值,只是这些数值小一下就算出来是八十一。新手武器就直接放到装备栏位置就行。装备栏武器位置是三,这是 游戏开发资料内存的偏移位置,就是物品长度乘以三,在这里写入总号,也就是物品序号。序号占用八字节加八,这里写物品编号,八点零的物品编号也占八字节,再加八写数量。一、赠送新手武器的代码已经写好了,再找一个新手礼包的物品编号。 很多人习惯把物品编号称之为代码,那编程写的代码又该是啥?但是叫物品代号也是可以的。 装备总共十五格,乘以十五就是背包第一格。刚才添加的礼包编号在设置的八号位置,这段内存数据都要保存到数据库里 写入。二、禁止数据,要指定数据长度,再增加一个长度变量,得到内存长度写二,禁止数据使用数据写入。这个函数缓存是 sql 语句,后面加上内存和长度,建议运行。测试代码很顺利,没有报错,但是发现有一处疏漏,总号没重新获取。每个物品的序号都要获取不同的数字序号,相同的物品在游戏里变黑无法使用。数据库表清空了,需要重新创建人物, 创建人物过程也很顺利,进游戏都正常,写入装备应该问题不大。现在装备写入数据库并没有读取出来,在游戏里是不会在装备栏显示的。 打开数据库看看装备有没有写进去,装备的字段比较靠后,找到他了。二进制显示了一串十六进制文本, 数据有点长,粘贴到记事本里就要好久。数据看上去没啥问题,大部分都是零,但是 是最开头那一小段,数据却不是零。那就不对啊,前三个装备是空着的,原因是申请内存的函数数据并不清零,需要使用申零内存。它有两个参数,长度和个数相乘,正好一个用物品尝, 另一个参数用八十一这个数,要不然就是用计算好的长度,另一个参数写一,总长度乘以一,这个不算问题,只是感觉装备太长了, 高版本的单个物品长度都有一百六十多,很多零数据占用空间太大了,下一期研究如何缩短这些数据。

玩王者荣耀最怕遇到卡顿和掉线,但你可能不知道,每天有超过一亿人在玩这个游戏。对比一下你玩过的炸服手游。王者荣耀使用的 tfboyssdays 数据库太牢固了,海量用户对局技能释放无延迟。这就是 tfboyssdiss 数据库高并发、低实验的巨大优势。即便在春节这样的高峰时期,天, 卡布莱斯电子背景数据库也能立即扩容,保证用户流畅,对战不受任何影响。全球第一手游背后,是腾讯云卡布莱斯电子背后数据库的强劲支持。

啊?哈喽,大家好,我是小新,然后今天给大家带来的是 神魔二点零雷霆的一个搭建教程,然后首先我们准备一台服务器, 然后安装一下宝塔这边服务器跟宝塔我已经安装好了,就不再演示了,然后 搭建环境也配置一下啊,首先需要一个 ng 一点一八,然后 php 跟数据库五点六版本,然后关闭一下防火墙,我们先进一下服务器的控制端, 进一下安全组,然后有一个放通 全部端口。呃,教程里面也是有的这个开放端口的全部教程, 然后宝塔里面我们也进行一下端口的放行,安全 放行完之后我们关闭一下这一个防火墙, 看一下防火墙关闭在宝塔里面也一样可以关闭的,然后如果不放行全部端口的,我们可以搭建完成之后啊,我们输入一下命令,查看一下哪些端口是正在使用的,然后其他没 用的端口我们可以选择性的关闭,然后上传原码,原码我已经上传完成了,然后我们就直接进行解压 在文件里面,原码的话我们上传到跟目录就在这里,然后数据库这边的话,我们需要设置一下数据库的密码, 密码我们就设置简单一点,这里我也设置好了提交,等待一下解压, 解压完之后给一下七七权限,权限一样的,可以在文件这边给权限,也可以输入命令调用。 那我们给一下权限啊,刷新一下文件这边,我们可以看到权限已经给了,然后修改一下数据库啊,修改一下这个文件就可以了。整套搭建还算简单的,需要修改的地方就一个点, 呃,我们把原先的 ip 改成现在服务器的 ip, 更改完之后保存一下文件,那导入一下数据库, 数据库导入完成,然后我们进行一下服务器 获取,获取到服务器,这样整体的加设就已经完成了。然后我们加设一下 gm, 创建一个网站,有预名的话绑定一下预名,没有预名的话直接用服务器的 ip 也是可以的。然后端口的话可以选择添加或者不添加,然后游戏这一个跟目录的话选择一下游戏目录,这一个 创建成功了就可以的。然后我们可以先看一下 g m 端 啊,创建一下账号,首次的账号的话就是一样的,但是需要输入两次 账号跟密码,创建成功,然后再一次是登录, 那登录成功了啊,我们接下来运行一下游戏,启动一下服务端, 启动完成这一个跨服的话,我们也启动一下。 启动完成,我们运行一下看看。注册一个账号, dj n lie remus 账号注册成功之后进来一下界面啊,然后这里可以新增 游戏区。登录进来之后呢,我们可以选择一下职业,有三个职业啊,选择职业之后啊,创建一下名字, 然后角色的话女性角色,男性角色也都可以看见, 游戏的话正常运营可以正常运行的,然后运营级别是否达到呢?可以自己研究一下,有能力的话可以自己二开。然后我们看一下 gm 端,呃,充值,我们邮件一区,然后账号刚刚注册的账号 物品,比如说我们可以设置一下经验,经验搜索一下 纪念屏发送,然后再发送一下这个元宝,我们可以看一下前端元宝是零,然后搜索一下元宝 发送啊,然后这边前端也是有收到的元宝的数量,因为我们发送太多了,我们改一下 啊,这刚发送的是元宝卡, 这个我们可以随便选择 七七七哦,元宝七七七啊,领取到账,然后 vip 也是一样, 呃,充值系统里面这是元宝月卡,特权卡, 特权卡我们可以在背包里面使用,道具 啊,后台什么的都是正常使用的, vip 也是都有,然后充值的话充值礼包 都是正常使用的,然后更多的话就自己研究,圆满的话我们也会放在教程。

数据库是每个开发的必需品,盘点一下那些好用的数据库管理工具,快拿小本本记下来吧!第一个, apre, 一款数据库管理客户端工具,是由大名鼎鼎的 get gens 公司出品, 有关键词导航、快速导航等指定的表示图、函数等功能,在使用中查询结果自带白线按钮,在智能提示中,五十对一百加的资本也可以做到秒级提示。 总而言之一句话, jack blues 出品,避暑精品。第二个, lot cat 是一套快速、可靠和全面的数据库管理工具,用于简化数据库管理和降低管理成本,可以对智能对象设计,简化数据编辑,简易三口编辑、无缝数据迁移的功能,对大数据量程序有较好的 ui 设计,非常受大家信赖哦。 第三个环线口是一个关信型数据库管理系统,使用的是访问数据库的最常用的标准化语言。它数据库体积小,速度快,总体拥有成本低, 开放元代码,这是 mac、 windows、 lenux, 功能齐全,那边看有的功能他全都有,最重要的还是免费哦。第四个, guitar couplets, 是用 guitar 和 openai 联合发布的 ai 代码补全工具, 给出一条描述代码逻辑的注视,也能自动完成代码片段。它像是有读心术一般,精准预测要输入的内容,目前该项目还是技术预览版,相信在不久的未来一定可以普及哦。你还知道哪些优质的数据不管理工具呢?

各位小伙伴好,主页所有视频都能提供原代码以及调试讲解修改服务,有需要的小伙伴可以移至主页自行选择。

大家好,我是 michael。 这个视频我们要为我们的背包系统创建我们的物品的数据库了。听到数据库是不是有点头大呢?不过你放心,你知道 michael 一定会讲一些比较简单容易明白的这些小的技巧,所以不卖关子了。这就是我们标题所写的 scriptable objects。 所以什么是 scriptable object 呢?它是跟 mono behavior 一样,是属于一个特殊的类,这个类跟 mono behavior 有一点不一样。如果我们在 api 的手册里查看 scriptable object, 你会发现它写了,它不需要挂载在任何的 game object 上,也就是它不像 mono behavior, 它需要一个物体才可以使用这个代码,所以它可以直接存在我的文件夹当中,而且它可以用来 存储我的数据。看到了吗?存储我的数据,所以它里面也包含一些简单的方法,比如说他也有 destroy in stancy, 包括 uneviable on disable week 这些方法,所以小伙伴们可以看一下这个手册。另外, scriptable object 通常会跟我们的 creatics menu 在一起配合来工作,那听起来有点复杂,我们来简单 举个例子,比如说在我的 project 窗口当中,在空白的位置,按鼠标右键,我们会弹出一个菜单,这个菜单就是我们的 ss menu。 我们可以通过 scriptable object 在里面创建属于一个我自己的分类的菜单来创建一个文件。那创建文件和创建 mono 比黑文的代码有什么不同呢?比如说我创建一个 material, 它是一个素材球, 这个材质球我会改变里边的属性。那么不管我的代码如何来运行,甚至我的游戏启动或者关闭,这些东西都不会消失,而且这个会以一个文件的形式存储在我的项目的文件夹当 当中,所以它是一个文件,用来存储一些数据。另外 monon behavior 需要挂载在一个物品上,比如说我们挂载在我们的 player 上,然后我可以更改里边一些变量的数据,这个数据我是可以通过代码的运行来进行更改,比如说这个速度,比如说碰到什么东西了,我这速度更改了, 但是只要我的游戏一暂停或者停止再进去的时候,他会按照我先前代码中设置的速度,依然不会被改变, 这就是我们没有办法去保存我原有的数据,或者保存我更改的数据。 scripto object 就可以很好的解决这个问题了。话说了这么多,我们一起动手来做一下,你就能明白它有什么奇妙的用处了,这 是一个非常好用的功能,所以我们在我们的 inventory 的文件夹当中,右键新建一个文件夹,我们给它起名叫做 script, 为了用于区分我们, 我给他起名叫做 inventory script, 跟我们的背包系统有关的代码在里边。我们在右键新创建一个 c shop 的脚本,我给他起名叫做 item, 我先创建跟我的物品有关的, 那我希望这个 item 的这个代码用来存储我物品的所有的属性信息,比如说他的名字,他的图片,他有多少个,然后他的一些 information, 所以我们一起来看看如何用 scriptable object 来写这个代码。我们双击打开扣子, 然后在这里我要将 mono behavior 改掉,我不要使用 mono behavior, 我要使用 scriptable object。 使用了 scripto object 之后,我们就不要用这个 start 和 update 的这两个方法了。那么接下来我希望在我的右键的菜单当中来创建属于我的这个 item 的这个选项。所以每 自我选择可以创建一个新的物品,里边能包含一些属性,所以我们会在上面写上一个方法。 一个投文件的方法是 create ss menu, 然后它这里面我们要写上你新创建的这个菜单的文件名,文件夹的路径是什么。 还有每当我创建了那么新的那个文件叫什么名字,所以 file name 等于一个字符型的文件名。比如说你新创建一个东西,这个东西默认的名字是叫什么?我给他起名叫做 new item, 所以作为他的默认的名字逗号隔开后边接上 menu name, 也就是说我右键的菜单他是叫什么名字,所以我给写着等上等于 um inventory 一个斜杠,表示它的紫菜单叫做 new item。 好, 我们先保存这个代码来看看是什么样的效果。回到 unit 当中,我们在空白的位置按鼠标的右键,然后你会看见 create, 这个时候你会发现在最上边有了我们刚才新建的这个菜单了,就是 inventory, 然后里面有我们设新的项目,就叫做 new item, 然后我点击这个 new item, 他会为我创建一个新的叫做 new item 的默认名字。比如说我给他起名字叫做 sword 一把剑,然后你会发现他像一个文件一样在这里存着,我不需要把它挂载到任何的空物体上。接下来我们来给这个物品添加一些属性, 我们继续来写,我希望我这个物品有一些公开的变量,用来存储我不同的物品的属性。比如说,首先我最基础的要有一个物品 的名字,叫做 it name。 另外我希望他有这个物品特殊的图片,所以这里边我们用 sprite, 也就是他渲染的精灵来获得他的 图片,起名叫做 item image。 另外我需要储存我这项物品有几个,因为在背包当中,多个同类物品应该放在一起,所以我们要有一个整形的变量,叫做 item help, 你现在持有多少个?另外我需要 item 的 information, 它的一些描述同样也是字符型的。 好,写到这里以后,我们回到我们的 unity 当中,我们来看一看现在的我的这个 sword, 这把剑的属性就已 已经显示在我的 unny 的窗口当中了,可以看到我,他有名字,有图片,有他有几个,还有他的 information。 所以每一次我右键新创建一个物品,比如说我创建一双鞋, 他都会有这些默认的分类,所以我只要在里面添上这个是斜,然后我给他一个他的默认的图片,我们可以去到我们的 ss 当中,找到我的 free pixel gear。 这里边有一些物品的属性,我只要将他们拖拽过来就可以使用了。比如说我找到这个穗, 然后我添加 image, 可以在这里面找宝剑的话我们用这个,然后斜的话我们也可以用斜的那个, ok, 然后我可以添上一些 information, 他默认只有一个 information。 好,然后在这里面还要给大家介绍一个小的技, 有的时候我的音封面上会非常多,比如说以后我们获得一个很传奇类的物品,下边会有一些描述,甚至是一小段话,所以这个时候一行代码不够我来写,所以我要写多行的时候。这个时候我们在他前面加上一个中国号,里面写上这是一个 text area, 所以如果你搜索 tax area 的话,他后边也可以跟一些参数默认是多少行,所以我只想使用他的默认属性,我就直接保存回到 unny 当中,这个时候你会看到我的 information 这个部分里已经不是一行了,会变成一个文本框,在这里边我可以输入多行的内容来代表他的信息。另外我也可以创建一个布尔值, 因为我们的物品只有两个类型,要么他是一个药水,可以恢复我的生命,要不然他就是装备,是可以备装备上的,所以我给他写上一个 equipped。 好, 所以我用这个属性来确定他是否是一个可装备的。那如果是药水的话,我就不勾选,如果不是药水,我就将它勾选上,代表这是一件装备。所以同样我也将这个宝剑的内容写上。所以请大家留意这个 information 当中,我们也可以写用中文啊,他同样可以识别。 好的,那么我们要将这两个物品也单独保存,而不是存在这个 skips 里边,所以我们将它印起一个文件夹。在 inventory 的文件夹当中,我们新建一个 folder, 叫做 items, 专门用来存储我的这些物品,所以我们去到刚才的文件夹中,将他们两个拽过来。 好的,现在我有了 item 之后,接下来我要创建一个背包,我们另建一个 ctrl 的脚本,就叫做英文 turret, 这个是用来干嘛的?我同样要用 用一个 scriptable object 来创建一个背包的系统,我希望这个背包的系统是一个列表,他将我所有的物品都储存在这个列表当中,这样的话我们就可以每次创建不同的背包。举个例子,以后我们可能需要有玩家的背包, 还有铁匠铺的背包,药水商的背包,或者是你的身体的那个装备的页面显示的那个,也可以称作为一个背包。总之,所有用列表来储存物品的东西,我们都可以创建一个新的背包,所以我们来一起写一下, 同样不需要这些,那就像刚才说的一样,我们要将这个 inventory 变成一个列表,用来存储我的所有的物品。所以我们 public list 这个 list 里边文件的类型,数据的类型就是我们刚才创建的那个 lay, 就是 item, 这样的话能保 保证里边所有的物品都是 item 的 lay, 然后我给它起名叫做 item list, 等于 new list item。 好的,我同样希望他哦,别忘了这后背有小括号,我同样要将它保存在我的 menu 当中,所以同样这里我就快速写了 后边这个部分。请留意,如果我希望他跟刚才的 item 存储在同一个文件夹的目录,我可以直接将这段的名字复制过来, 然后在这里边把后边这个部分改掉,比如说后边就改成 new inventory。 好,我们保存回到 unique 当中。我们来看一下,我们在 inventory 的这个总的文件夹当中 来创建一个新的文件夹,用来起名叫做 new inventory。 里边按鼠标右键点击 create, 然后找到 inventory 的这个紫菜单。我们可以看到我们现在创建了两个菜单的选项,所以我们要创建一个新的背包。新的背包我给它起名就叫做 my back, 因为以后我们可能还会创建其他的刚才我说过的各种各样的背包,所以可以看到这个背包它是一个 list, 是一个列表。所以我希望做的一个效果就是当我的游戏角色碰到世界地图上的一个物品之后,它的 list 里边就加一, 然后这里边包含的项目,我就要将我刚才的这个 item 它属于哪一个类,我就将这个 item 放过来,这样我的背包里就多了这件物品了,所以这就是我创建背包系统的这个逻辑。那么接下来我们一起来动手实验一 下如何来实现这个效果。那我需要先在世界地图上产生一个物品,所以去到我们的素材文件夹当中随便拽一个,比如说刚才我们用了哪一个做的宝剑呢?所以我们将这个物品添加到我们的 helloak 窗口当中, 然后他就可以在我的地面上显示了,你也可以拖拽把它放到一个适当的位置上。接下来我要给他添加一些必要的组件,比如说他需要一个 collider, 我给他添加一个 box collider, ok, 大小没问题。然后我不希望他跟我的游戏角色产生碰撞,我希望他是 trigger, 所以我勾选这个 trigger。 另外我要给他写一个代码,这个脚本的代码希望是应用在所有的物品上,只要触碰判断是游戏角色碰撞了,那么他就会保存到我游戏角色的这个 bag 里面来,所以我们来一起来写一下这部分的内容。所以我去到英文策略 文件夹当中找到 inventory scripts, 在里面右键新建一个脚本,叫做 item on word 在世界地图上的物品。好,我们双击打开,我们来一起写一下这部分的内容。这部分我们就使用 mona behavior 了,接下来我们一起来看看怎么写。我先要获得这个物品的属性, 当我把这个脚本挂在的物品当中,我要知道这个物品是属于哪一个我们创建好的物品的数据,这是两个相当于数据库啊,你这个物品是属于哪个数据库?所以我要生成一个变量来告诉我的 unity 这个东西,它是一个鞋还是一个保健?所以我们要开始生成一个 public item, 就是刚才我们写好的一个类,我把它放大一点,起名叫做 this item 这 这个物品。然后我也要知道背包你的物品应该去到哪一个背包,所以我 public 英文 turret。 刚才我们写好的那个类, 给他起名叫做 player inventory 好,保存回到佣金当中。我们先来确定这两个变量的数据,所以刚才我们写好的这个 item on word, 他应该被放在每一个物品上,所以我们直接将这个 item on word 拖拽放到我的这把键上, 然后他这里需要你给他拖拽赋予两个值,一个是你这个物品的本来的属性是哪一个数据库,另外就是你的玩家的背包是哪一个背包,所以这刚好我们创建好了。第一个就是 item, 这是一把剑,我将这把剑的属性拖拽过来,然后另外 player 的背包是哪一个?我们找到我们的 new inventory 的这个文件夹,当中有一个 my bag, 所以我将 my bag 拖拽过来。最 所以接下来我要实现的代码的方法就是判断游戏玩家是否碰撞到这个物品,碰撞的话,将这把剑放到我的背包当中,我们一起来操作一下。所以刚才我们为这个物品添加了一个可来点,但是一个 on trigger, 所以我们用 on trigger enter to d。 然后接下来我们来写一下里边的内容,判断一下。如果另外一个物品 点 game object 它的 tag。 以前我们用 tag 等于,那这次我们用一个更好的方法叫做 compare tag, 匹配一下他的标签是什么?标签是 player。 这个标签的 player 是在我默认的这个项目当中,我已经给 player 添加好了,就是 type 是 player。 如果你还没选好,或者你用的资 自己的项目,请在这里选好它是 player, 或者填入你对应的那个 tag。 如果是这个 tag 的话怎么办呢?我们要判断要添加一个物品 i'd new item, 可是这个方法我们还没写呢,所以接下来我们来写这个方法。我们生成一个方法, 添加一个新物品。我们要先判断当前的这个物品是否已经在这个利斯特里了,如果在这个利斯特里,那么他加一。如果不在这个利斯特里,他要被添加到这个利斯特里。小伙伴们,还记得我们在 roby 的这个项目中怎么添加一个宝珠到我们的列表当中吗? 我们来判断。如果 player inventory 点 item list, 还记得吗? 刚才我们设置的这个列表的名字叫做 item list, 所以在 item list 当中是否包含 this item? 所以现在我的写法是,如果它里边包含,那么怎么办?有,一开始先用否定来判断, 如果这包包里没有这个物品,那么我要将这个物品添加进来。 this item。 okay, 那接下来我们还要写一个 else, 如果这东西已经在这里面了,我们怎么办呢?我们就要将当前物品的持有度增加一。 this item, there are item help。 还记得吗?我们设置了这个物品的属性,它是一个 scriptual object, 是我们刚才设置好的类。这个类里边有一个物品的持有数,所以我碰撞以后,如果判断它里边没有,那么我加入这个物品。如果已经有了,那么就将这个物品的持有数 加一。另外在上面的这个方法当中,当我碰撞了这物品之后,除了要添加这个物品之后,我也要将当前这个物品毁掉,所以要 destroy game of object。 好啦,我们回到 unity 当中,我们来试验一下。在试验的当中,请留意 my bag 里边要清零,这个物品是没有的。 另外我们留意,我们之前添加的是一把键,这个键的默认持有数是一,然后我们来试一试。我们点击 play, 然后我们要选中我们刚才 他创建的 my bag, 留意这里边的参数的变化。现在我控制游戏玩家,然后我触碰这把剑, 看到了吗?现在这把剑已经被添加到我的列表当中了,同时在画面中已经没有了,这样的话我就成功的将这把剑添加进来了。那我们再试试,看看剑的属性会不会有一些变化。 看,当我停止游戏的时候,我的背包系统数据并没有改变,这把剑仍然被添加进来的,这就实现了存储信息的这个功能了,所以小伙伴们可以发现用 scriptable object 可以存储很多信息,所以你的玩家的属性 h p m p 力量 总结各个方面的属性,甚至一个 boss 他的长的样子,图片是什么。所以用了 scripto object 的话,我相信所有的美术老师也会非常喜欢你,因为他们即便不会用代码, 他们也可以直接将他做好的图片拖拽放到这个位置,那么就可以改变你游戏里面的各种各样的素材了,是一个非常方便的工作。所以 scriptable object 真的是是一个非常棒的一个东西,希望小伙伴们赶紧用起来。好,那接下来我们来试验另外一个, 我还是这把剑,我现在背包里已经有了,而且这把剑的属性是你目前保有一个,那么接下来我在 play 运行一下,我在原有的基础之上,我再次碰撞这把剑,我们来看看这属性的变化。 看,这把剑现在已经有两个了,但是你的背包当中还是只有这一个物品,这一物品现在已经有两件了,这样的话我们就很好的实现了我的背包系统的后台的操作,所以我们创建了我们的数据库,然后也将这个数据库跟我的世界物品连接起来了。接下 下来最重要的一步就是将我的数据库里的东西在我的 slot 里边显示对应的图片,对应的数量,然后让我们的背包可以显示对应的这个物品。 好的,那么这个视频就到这了,小朋友们你们学会了吗?别忘了为我点个赞哦。那我们下个视频,再见吧,拜拜。

各位小伙伴好,主页所有视频都能提供原代码以及调试讲解修改服务,有需要的小伙伴可以移至主页自行选择。

程序员常说的网站 app 小程序数据库是啥?一个网站 app 小程序的程序开发有前端开发和后端开发, 后端开发一般来说就是开发在服务器上运行的程序代码,这些程序代码基本上做的就是自动的 excel。 哦,又又说错了,是数据库里的表做真山改查的操作,俗称 curd。 好吧,那这个视频我就好好讲讲这个数据库到底是个啥?根据百度百科的解释,数据库是一个按数据结构来存储和管理数据的软件,分为关系型数据库和非关系型数据库。 关系型数据库有 auricle d b、 two mic、 circle、 microsoft circle server、 microsoft access 等。非关系型数据库有 mongo d b、 readies、 没开学了等。具体大家现在不用 针灸,只要知道以后你可能会跟芒果 db 打交道比较多,当你的项目做的比较大了,可能要开始跟 my sirco 和 radis 这两位兄弟打交道,所以现在知道芒果 db 就可以了。 我之所以老师傅把数据库和 excel 表格说错,是因为这两个东西确实很像,像到你就把数据库理解围在服务器上,用的更专业的 excel 表格也没有太大的问题。 尤其是像买烧烤这样的关系型数据,在像 nav 开的这样的数据库管理和设计软件上,连表格界面也很像。 给大家看看在哪位开的上查看使用麦塞库的数据库表,就给大家看看我之前学 pgp 的时候买的一个还不错的 pgp 教程的编程案例,这是那个案例的数据库表,这里和大家经常看到的 xl 还不像,我们 随便打开一张表,这就有点像了吧。最上面一行是程序员常说的字段,然后我再给大家看看同样的数据库表用 excel 做是啥样子的, 这些就是数据库里的那些字段,所以说一个赛尔文件就是一个数据库,也没有太大的毛病。 大家可能不一定知道 excel 也可以编程的,编程语言是 vba, 也就是维修 basic 啦。大学里一般理工科要学 c 语言,文科要学维修 basic。 excel 编程也能做出图形化操作界面。这是我网上找的一个用 excel 做的 excel 里面的应用。这里的编程语言 vba 就相当于服务器上的加瓦 p g p python, 点 nice no 的,点 gs go 的。这里的操作界面就相当于一个网站 app 小程序里的一个页面。

我跟你都说了,埃塞数据库,他本身他就是一个面对单机版的办公需求场景的这么一个软件,还有那么多学员跟宇哥说什么必须上互联网,必须上云端,你说你能搞定吗?你不是所有的这个软件开发需求都要上云的, 你百分之九十的需求是办公需求,单机软件对不对?你本身一个扫升级成二个三的数据库的需求,你非得上学,你自己不是自找麻烦吗?对不对? 我看那么多学员,我感感觉你们是不是让那些爬虫软件都给你们忽悠蒙了?那本身的单机软件用 x 数,以后用 vb 用 vb 就足以应对了。你本身是个小厂,像宇哥这些粉丝,浙江广东那些工厂非常多的粉丝,就是问 问我,我说你们工厂本身就那么十几个人,你还花他妈几十万几百万,上级二逼干啥?你自己学一学阿克萨斯数据库,搞了一个小的进销存不就行了吗? 你非得上那么大的数据库干啥?你本身花了几百块钱,千八百块钱就把你们生产的效率就提上来了,你还非得上什么?什么必须慈爱普,必须什么用?有 你挣这点钱,你多雇几个人行不行?所以说我跟你们讲,你们根本就不懂这个软件开挖这行业,你就问宇哥对不对?宇哥在全网这么多学员办公软件的女同学,哪有不认识我的?我告诉你有没有,你去问问去。

做软件项目的数据库一定要用云数据库,如果有谁跟你说,建议你用本地数据库也是一样的,你直接把他撇走,不要听他的建议, 直接把他 pass 掉。你就按照你的道理,我就要用云数据库,你别跟我扯其他,没扯淡的,我是甲方,你就听我的,就用云数据库就行了。好,现在给你解释一下这个原因是什么?可能刚刚那种说话说话的方式太过了啊,你自己去圆润圆润一下嘛,委婉一下就行了。 我现在给你解释一下,为什么要云数据库,用本地数据库行不行呢?行,用云数据库能备份啊。那本地数据库能不能备份也能备份。 那为什么我要你用云数据库呢?原因就在于只有云数据库你才能确保软件公司是一定有备份的。为什么云数据库上他有插件,有那个点击的按钮,你比如说假设阿里云,你点到阿里云里面去点击云数据库 ds max 口,点进去之后点 点这个备份,这一天你可以去设置七天备份还是三十天备份还是六十天备份,你可以加高你的备份的日子量好,但是用本地数据库, 你能确保吗?你作为一个不懂技术的人员,难道你去看代码吗?你能确保你的数据最安全的办法就一定是用云数据库,那样才能确保 你。假设人家给你用个本地数据库,程序员跟你说我已经做好了备份,那最终如果他没做好备份,他或者代码有一些失误,或者定时任务写了一些问题,出了一些问题 谁负责呢?你又能确保他真的不会出问题吗?谁都不能确保代码不出问题,对不对?你能检验他的办法很复杂,成本也会比较高,时间也会比较多,所以直接用匀速去省事。

游戏开发需要学什么编程?游戏开发需要学习 c 四加加、 c 十二普等编程。为了节省成本,游戏开发商通常利用游戏引擎来开发游戏。不同的游戏引擎需要学习的编程不同,比如用 una t 引擎来开发 需要学习 c 十二不编程,用虚幻四引擎来开发则一般学习赛加加编程。用扣扣四二 dx 引擎来开发也需要学习赛加加编程。除了编程语言,游戏开发还需要学习程序设计和游戏引擎开发相关的知识。程序设计方面需要学习计算机基础、 数据结构、预算法、数据库、计算机图形学、设计模式快、平台开发、操作系统特性等知识。游戏引擎开发方面则可以根据自己感兴趣的方向来选择,深入 学习某一引擎开发方向的专业知识,比如可以学习英德体三 d 引擎开发、虚幻四引擎开发或者 cocos 二 dx 引擎开发等等。