粉丝67获赞695

今天本来想处理一个文件的格式,搜了半天没有找到特别合适的工具,索性就让 nih 写了一个工具出来试了一下,很好用,今天免费分享给大家。它主要什么作用呢?像我们平时工作的时候,经常会遇到一个场景,我们要做各种各样的格式转换,像把 c s v 文件转成 z c 文件, excel 文件或者是 i m l 数据库文件, pdf 就是 这种文件,我们可以直接做这种互相的转换,适用于比如你是数据分析师、开发人员或产品经理,包括学生、财务等等这种。只要你的在工作场景里面涉及到这种各种各样的格式转换的时候,就可以用这个工具 第三方的数据转成 json 格式,然后文本数据导成 pdf 等等,这种都可以用。试一下。像这种工具其实已经很多了,那为什么还要专门去写一个有些数据比较偏个人隐私的方面,那像这种文件我就不太敢去上传上去, 所以我写了这个工具,它有一个特点,就是它是纯前端处理数据,是不上传的。你在用这工具的时候,它这个格式转换只在你电脑本地去运行。我给大家演示一下啊,就比如我现在点击一下上传这个位置,我现在选择一个 csv 文件点一下, 点完之后它立马就会把这个文件给放到这个位置了。下面这个配置线一般点完默认就可以了,它就是一个风格符, 可以默认选这个英文的这种逗号大家看到了吗?它这个转换其实是一秒发生的,就不需要等,直接就把这个格式就转过来了,转过来之后我们现在就可以直接把它给下载下来就可以了,点击下载完之后,我们就直接可以在本地上看到这个文件, 这里面就已经转换好的文件就可以直接去处理,用到我们别的地方去了就非常方便。那他还有一个做我可以批量我要处理的文件,不只是一个,比如这里面我就选择两个, 那选完之后我一点击上传他这两个文件放这选择我对应想转的格式,现在点击批量转化两个文件,我一点击之后就立马把这个文件转好了,这个时候我点击打包下载全部,他就把一个电脑本地里面直接就可以使用了,就是非常方便非常快。 这个工具主要优势就是三个,一个是百分百保护我们的隐私,另外一个就是多格式转换,还有个就是速度非常快,而且支持大文件处理。大家如果经常会用到这种格式转换的一个场景的话,可以推荐大家去试一试。

一个人十分钟开发元神,这是我刚刚一个人花了十分钟左右开发的元神 demo 版,接下来我会给大家展示完整的制作流程, 当然十分钟左右的时间不可能实现元神的全部功能,这里我只实现了基础的主角场景的导入,然后实现了简单的第三人称角色控制,然后做了一个角色切换的功能, 然后我还实现了角色攻击,我们可以按一下攻击键,开个玩笑,时间这么短不可能实现攻击的,那这里的攻击我就用五毛特效来代替了。接下来我们开始正式制作这个游戏 demo, 大家不需要有任何游戏开发的基础,只要跟着我 一步一步的做,就能把这个游戏实现出来。那首先我们需要导入游戏里用到的角色资源,在这里我们可以打开元神官方发布的这个模型下载渠道,然后在这里就可以下载到我们需要的各种各样的角色,但是它这里下载下来的角色 是 p m x 格式的,那这个格式是没办法导入到我们的 unity 引擎里面直接使用的,所以这里我们需要把这个 角色模型转一下格式,那我们打开我们的建模软件 blender, 这里大家要注意这个 blender 的 版本号,因为我们等会会用一个转格式的插件,所以这里版本号的话要是二点九三以下的, 因为二点九三以上的版本的话,它是不支持这个插件的。那接下来我们来安装这个转换模型格式的插件,然后我们点击这个 edit 标签页,在这里打开 首选项,然后选择安装插件的标签页,在这里我们点击 install 按钮,找到我们插件的安装包,这是一个压缩文件,我们选中这个安装包, 然后点击安装,那现在我们这个插件就安装好了,他默认是不开起的,那我们可以点一下前面这个复选框,把这个插件开启,开启这个插件呢以后我们点击这里有一个往左的箭头, 那这个标签页就是我们刚刚安装的这个插件,那接下来我们点击这个导入模型按钮,然后选择我们刚刚下载的模型, 那这里导入进来,它是一个灰模,我们点击这里的修复模型按钮,好,现在我们模型的贴图就正常了,然后这个模型它是自带骨骼绑定的, 我们可以点击这里把这个骨骼不显示,那我们现在就可以看到这个模型的完整样式了。接下来点击这个导出模型按钮,现在就是 fbx 格式的了,我们重命名一下,然后点击导出, 现在我们就得到了 fbx 格式的角色模型,这个模型是可以直接导入 unity 里面使用的,那我们打开 unity, 在 这里新建一个项目模板,选择三 d 模板,这里我们用的是默认的渲染管线,然后输入项目名称,点击创建项目, 现在我们创建了一个空的 unity 工程,大家可以按照自己的喜好调整一下布局,然后我们在这里新建一个文件夹,命名三 d, 然后在下面再创建一个文件夹,如了锁引到词盘目录,然后双击打开,我们把刚刚从 blender 里面导出出来的这个模型粘贴过来。 这里大家先不要急着回到 unity 里面,然后我们找到最开始下载的这个元神的官方模型,我们把它解压出来,在这里有一个贴图的文件夹,我们把它拷贝一下,然后粘贴到 unity 项目里面,跟这个 f b x 文件同级的一个目录里面来。然后我们回到 unity, 把这个角色模型拖到我们的场景里面来。接下来我们来导入元神的场景,那这个场景大家可以到魔之屋里面 选择这个模型页面,选择这里的场景,然后点击这里的最多下载,那这里有各种各样的元神的天空盒,还有像这里蒙德组成的,那 这个场景下载下来了以后,需要在 blender 里面把每一个物体导出出来,然后再去 unity 里面去拼接这个场景,那因为这个环节是比较耗费时间的,那这里我就不给大家演示了,那我这里直接找了一个别人做好的跟元神风格比较接近的一个草地的场景,这 场景有两个资源包,上面这个是 u r p 管线的,下面这个是默认渲染管线的,因为我们创建的是默认渲染管线的项目,所以我们双击打开这个资源包, 加载完了以后,我们点击这个导入按钮,好,那现在我们这个场景就导入完成了,我们接下来把主角拖到这个场景里面来,教大家一个小技巧, 我们拖到这个主摄像机下面,然后再把这个角色拖出来,那他的坐标就会保留下来,然后我们双击定位这个主角,这个时候主角离相机是很近的,我们把他往前面稍微拖一下,就可以把主角放到相机的正前方, 我们按 ctrl s 保存一下,点击运行。那现在我们主角跟场景都有了,但是我们现在的主角是不会动的,那怎么实现角色的移动控制呢?这里因为时间有限,我就不带大家去写这个角色移动的代码了,我们直接在 unity 的 资源商店里面下载一个第三 人称角色控制的插件,在这里点击 window, 打开 asset store, 然后我们在搜索框输入 start or sets correct controllers, 然后点击搜索。那我做这个 demo 的 时候选的是第二个,这个 u r p 渲染管线的,大家可以尝试一下这个第三个,第三个可能更适合一些,我看它评分要高一点,我们就用这个,然后把它下载下来,点击添加自我的资源,然后选择在 unit 中打开 这里,在 unit 中打开了以后,我们点击右上角的 download 的 按钮,把这个包下载下来,然后我们点击 input 导入,它会关联下载三个额外的插件,我们点击安装, 安装完以后会提示你是否要重启我们的 unit, 这时候点击确定重启完以后,会自动打开我们的这个 package manager my access 这个标签页,我们在这里搜索刚刚的插件,输入 set, 然后点击导入, 再次点击这个导入按钮,现在我们的这个工程目录下面就有一个 starter sets, 那 在这下面就是我们刚刚导入了这个第三人称角色控制的插件,我们可以打开这个 scenes 看一下,那这里会出现一片洋红色,这个大家不用担心,主要是因为我们这个插件是基于 arp 渲染管线的,然后我们创建工程的时候选的是默认渲染管线,我们只需要把插件下面所有的这个材质,把它的这个 shader 切换一下,切换成我们的 standard, 好, 现在我们的角色就显示出来了,然后还需要切换我们场景里面的所有的 shader, 那 这个我们可以随便选一个,然后定位一下它所使用的这个材质的路径,在 这里我们把这个文件夹下面的所有的材质全选,然后在这里切换一下默认渲染管下的 standard。 好, 现在这个插件就能够正常显示了,但是我们不会用到这个插件的场景。打开刚刚我们已经制作好的这个原神的场景, 接下来我们展开这个 third person controller, 这个文件夹下面它有个 prefabs 文件夹,那我们把这个插件的主角,然后相机跟随,还有它的 main camera, 我 们把它一起拖到我们的原神场景里面来。 那拖进来以后,我们选中原本的主角,把这个主角的坐标,把它复制一下, 然后粘贴到我们新主角的这个坐标这里来。那现在我们这个机器人就跟我们的原声主角完全重合了, 好,对齐位置了。以后我们选择主角的预字体单机这里的 select 进行一个跳转,我们点击这里的 rig, 我 们更改一下这个动画的类型,选择和 umaid, 然后这个 ofata, 我 们就选择 create from this model, 然后我们来创建一个 avata, 那 现在我们展开这个主角的模型文件,我们可以看到这里会出现一个 avata, 这是我们主角空的 avata。 然后我们回到场景里面,把这四个预字体全部选中,然后点击右键选择 prefab, 把它完全跟原本的预字体解除关联,选择这个 impact completely, 然后我们选中这个机器人,在这里它有一个 avatar, 那 我们把这个 avatar 变更一下,变更成我们原 元神的主角空的恶霸塔。然后我们展开这个机器人,在这下面他有一个模型的麦系,然后还有一个是他的骨骼,那我们把这两个都删掉,因为我们现在要把它替换掉。 删掉了以后我们把主角的麦系,这是他的麦系,还有他的骨骼文件,这是他的骨骼文件。按住 ctrl 键选择这两个,把它一起拖到我们的新主角下面来,那这里的这个残留文件我们就可以把它删掉了。 然后我们选中这个 player follow camera, 在 这里它有一个跟随的目标,这里我们把这个 player camera route 把它拖进来,然后按 ctrl s 保存一下,我们来点击运行。 那现在我们发现这个主角他可以往前走了,但是他的这个动作不正常,他没有播放我们正常站立然后行走的动画。那这是什么原因造成的呢?我们可以回到我们插件的这个场景里面来看一下,这里我们展开这个 环境的标签页,找到它的地板,这是它的地板,这个地板的碰撞图层,它选择的是这个 default 图层。 那我们回到我们原神场景里面,我们看一下我们现在这个场景里面的地板,它是用 terrain 制作的,所以这是我们的地形文件, 但他这个图层的话,他没有设置任何的图层,我们把它设置成跟那个插件里面的一样,设成 default, 然后保存,再运行一下。好,现在我们的主角就已经可以正常的播放这个行走和跑步 的动作了,包括跳跃也可以,但是我们发现这个相机它没有做跟随,那这是因为我们现在场景里面实际上它存在两个相机,一个是这个 camera, 一个是这个 main camera。 我 们取消运行,把这个原本残留的这个 camera 直接把它删掉,然后再点击运行。 好,我们可以看到现在我们的相机已经可以正常的跟随主角去运动了。然后这个第三人称的角色控制器也没什么问题。和以前一样,点赞评论加关注,然后私信我要下载链接, 我会把这个项目的工程文件,还有所有用到的插件以及模型资源一起打包发给你。这个免费的领取时间截止到二零二六年二月三号凌晨二十四点整, 那过了这个截止日期,我会把这个资料做成会员专属的免费领取内容。如果大家对后续的切换角色部分的代码感兴趣,也可以在评论区给我留言。好,本期的视频就到这里,谢谢大家。

大家好,今天给大家分享如何导入更多的视题数据。我们导入视题,使用 csv 格式的文件,然后通过脚本导入。 现在我们打开项目,我们之所以推荐使用 csv 格式的数据导入,它有一个明显的优点,就是非技术人员可以维护, 并且批量操作,非常方便。主要的操作步骤,第一步就是创建 c s 为格式的数据,第二步我们编辑导入的脚本,第三步在 unity 编辑器中一键导入。 接下来我们看实际的操作步骤。首先我们创建数据模板,我们新建一个文文本档,命名为 question template 问题模板双击打开,然后我们输入一些字段,这个字段包括 id 号、科目、年份、省份等等。 然后我们将它另存为 c s v 格式的文件,下边写所有文件,这个编码我们记着一定是 u t f 杠八。接下来点保存, 我们现在看到的这个就是 c s v 格式的文件,我们看一下它的属性,它的文件后缀名是 c s v。 接下来我们看一些视力数据,现在这有三条数据,我们直接复制就行。 c s v 文件有一些需要注意的地方,第一个是不要有多余的行,例如我们现在再用向下的箭头,发现这个光标在这个位置它是不动的, 这就对了,不要有多余的行,或者是符号格式要与标题保持一致,要一一对应。现在我们回到右面题, 在 s s 下创建一个文件夹,命名为 resources, 这时我们就可以将刚才创建的 c s v 格式的文件拖动到这个资源文件夹下。 我们还需要创建一个 edit 的 文件夹,在脚本这个文件夹下,我们创建一个文件夹,命名为 edit, 然后打开创建一个 c 叉脚本,命名为 csv question import。 接下来我们双击打开新建的这个脚本文件,然后我们复制这样一段代码,现在我们就可以创建题目数据了。 在 uni 题的菜单栏选择工具,我们会看到有一个题目数据导入,点开选择 c s v 文件,我们可以直接将这个 c s v 的 文件拖动到这个字段的位置, 然后题目库,题目库,我们就选择 content bank, 双击,然后导入数据,我们就会看到在窗口的最下边显示成功导入三条数据,在控制台面板也可以看到它的输出结果, 显示成功导入三条数据,也就是刚才我们在 csv 文件里边输入的数据,这就表示我们现在数据导入的功能完成了。还有一个问题就是 csv 文件我们如何制作呢? 常用的方法可以使用 excel 转 csv 文件,例如我们还是用刚才的这三道题,我们复制将现有的 csv 文件删除,将这个 csv 文件也给它删除。现在我们打开 excel, 新建 excel 工作表,然后双击打开,我们将数据复制复制到 excel 里边,以后我们为它做数据分裂,这样各个单元格都有对应的数据线,然后我们另存为桌面上选 cv 格式,这样我们就获得了 cv 格式的文件,然后将这个文件拖动到 resource 这个文件夹下,现在我们点工具数据导入,将它拖动到 cv 文件的位置, 再选择题目库,然后点导入数据,现在看它也显示了成功导入三道题目,这说明我们从 excel 转化成 csv 文件也是可以导入到任意题中的。 按照这种方法,我们就可以添加更多的数据,包括判断题、填空题、解析题等等。 这里边有一个注意事项,就是 excel 表格的数据不能有空行。第二个是 excel 单元格数据,不能包括单元格内换行,按照这样的操作导入就可以添加更多的题目了。那好,我们今天的分享就到这里,各位下期见。

哈喽,大家好,今天给大家介绍优益体这个软件,优益体的话大家都知道它其实是作为一个游戏开发软件在被使用的,但是其实优益体的话近几年也在逐渐的用于工业上面的数据孪生,那么 接下来我就带大家来看看如何去新建一个数据孪生项目,用于工业上面来去制作数据化的场景。 那么首先呢 unity 的 话,它其实不只是 unity 一个软件,它其实主要的一个引入的一个软件叫 unity hub, 在 unity hub 里面我们要去去下载它对应的这些这个 unity 这个编辑引擎,这个编辑器版本, 那么比如我这里下载的是一个二二版的一个编辑器,那么接下来我就要去根据模板去新建一个空白项目。那么一般来说,我如果说简单做一个呃基于 unity 的 一个数字燃烧工业数字燃烧的一个项目的话,那我就选择一个 universe 三 d, 然后我直接选择创业项目,这个时候我就可以开始启动我整个项目的一个呃呃新建的一个过程了, 那么这个时候他正在新建项目,接下来他会打开他的编辑器,然后这个时候我允许了冒风险去打开这个软件进行编辑,那么这个时候我又调出了 unity 的 一个主要的编辑器的一个软件界面, 他这里会加载他 unity 里面所用到的各种呃开发包,包括语言包啊,场景包啊,包括呃字体包啊,各种场景类的一些资源 等。它加载完毕之后,这个时候就打开了我们的工作项目。 no, 这个 u e t 的 话,目前呢是一个纯英文版本, u e t 的 话,它是支持汉化的,你可以去找对应的汉化汉化包,然后去把它的软件界面汉化成中文。 但是呃,在这里的话,其实我觉得用英文原声的英文其实用的是比较习惯的,其实看英文其实是比较容易上手的。然后稍等一会,他这个加载的时候是比较慢的,尤其是首次加载的时候, 然后这里我们简单快进一下, ok, 那 么接下来我们现在就打开了 unity 的 软件界面,这个是它的编辑器界面,我们简单的来看一下这个界面,这个界面的话 左上角这边是菜单栏,包括文件呀、编辑呀、资产呀,然后这些主键呀、服务啊,窗口帮助之类的一些简单的一些菜单。然后右边的话其实是一个,我们先看左边,左边的话是我们去编辑场景主要的一个目录数,大家可以理解为是一个目录数, 我们比如说,呃,我们这个是新建的一个场景,那么在这个场景底下我们添加了主相机,对吧?添加了光源,然后添加了一个呃,这样一个坐标系,然后同时我们还有这个地面,那么 我们点击这个之后会会发现右边它出现了一个属性栏,那么其实右边这个 impact, 它其实就是我们对应的这些我们创建的所有这些场景中的物体,它对应的属性我们可以在这里去编辑,比如说物体的位置呀,然后光源的大小啊,然后相机的角度啊,这些都可以在这边属性栏里面去编辑。 那么中间这个那大家显而易见,它其实就是我们的一个主要的一个编辑窗口,比如我们可以在这里去拖动我们的相机视角,然后在这个窗口当中我们可以去按住鼠标中间可以去移动这个啊,平移这个试图,然后我们摁动,我们滑动滚轮可以去缩放这个视图大小,然后我们 按住鼠标右键可以去旋转我们的视角,那么大家会仔细看的话,会发现左上角这里有一个 scene 啊 scenes, 还有一个 game game, 其实,那么其实这两个我们待会就可以看到区别在哪。然后我们先看左下角下方的话,我们可以看到它其实是个 project, 这个是什么呢?这个其实就是我们整个这个,呃用一体这个项目所用到的所有资产,这个资产是包括什么意思呢?资产 意思就是我这个 u 一 体这个数字燃烧这个场景项目里面,它包含了这样一个信,这样一个场景,那么它还包括我这个对这个场景做的一些设置,然后还包括我底下我这里面所用到的脚本, 我用到脚本就这个是脚本的意思,包括我用到图标,包括那么这个 size 里面,它其实就是我这个整个这个数字燃烧项目里面所要用到的资产。比如说 我想要在这个这个场景里面去导入一个模型,那么我就会把模型先放到这个本地的这个,呃,在这个资产包里面,我就把模型先导入到这个资产包里面,拖入到我们的目录里面去, 再把这个,呃,然后这个时候模型就会出现在我们的场景当中了,我们就可以去编辑,然后再通过属性去编辑这个物体的位置啥的,然后那么其实还有就比如说,比如说我要在这个场景当中去设置我的 ui, 对吧?像你打游戏的话,我们会有那种,呃游戏的那个准心啊,然后包括这个呃方位角啊,比如包括数值啊、比较速度啊,然后子弹啊、弹量啊啥的。你这些 u i 这些字体,你可能需要用到微软雅黑啊,或者说一些特殊的一些字体,那么字体的话也是通过我把我们从网上下载的那个字体的呃格那个对应格式的文件直接放到这个 set, set, set 这个, 呃这个资产包这个文件夹下面去,然后再把这个字体去导入到我们这个呃这个场景当中去,然后就可以实现一个更新。你不只是我们刚刚讲到,对吧?我们的三 d 模型,然后我们的字体,然后其实还有包括像我们的纹理,然后包括还有像, 呃还有的话就是我们的脚本,因为比如说对于 u 一 体里面,我们比如说我在 u 一 体里面 导入的一个工业机械臂,那么这个机械臂如何在这个场景当中实现一个呃实现一个运动呢?那么我我就要去对它,对这个机械臂做一个呃,通过脚本去对它做一些算法上面的一些呃脚本开发,比如说我们做运动学正解,做运动学逆解,那么 那这个时候我们就需要通过它 u 体里面自带的这个脚本去实现了它在 u 体里面我们可以直接在右键, 你会发现我们在这个目录数字里面,右键会发现它有很多个选项,比如说我们创建一个 empty, 我 们创建一个空白的一个一个物体,对吧?我们创建一个空白的物体,那么你看这个物体就会出现在这个这个场景当中,只不过这个物体它是没有形状的, 因为我们这个物体我们没有指定它是任何形状,对吧?我们只指定的它有这样一个物体,它的坐标,你看会翻看到它有一个坐标以及它的旋转轴。 另外比如说我们在这里去新建其他一些项目,你看他可以新建一些光源,你看这是光源,对吧?然后声音啥的,以后 ui 就是 新建 ui, 比如说我们可以简单的去新建一个文本, 对吧?那这个时候你看这个时候我们就可以,呃,然后他这里是要导入他对应的那个文本的那个那个包,然后这里我们先不导入了,然后我们先看,然后我们先再看看别的, 然后我们看,然后我们在右键,我们看看这里,然后在这里你看还有相机啥的,然后然后这里,然后这里的话,然后这里的话我们看到这里的主键,这里来在主键,在这里,然后在脚本, 因为这是一个空白项目,可能现在还加不了脚本,我在这里在这里有脚本 y 脚本, 然后然后我们先来看这样一个东西,那我这里点运行之后,然后这个时候它就在编辑它这个 u v t 的 这个功能项目, 编辑完了之后,你会发现这个时候主要的这个场景编辑器,它,它直接自己跳到这个 get 的 一个界面,那其实也就是什么呢?就是说我们是在 sim 里面,在这个 sims 里面去编辑我们的场景,编辑完了之后我们点运行,这个时候我们就进入了游戏模式, 他是这样一个意思,然后在这里游戏模式里面我们可以去设置他的这个分辨率啊,然后包括显示器啊,然后包括那个显示哪些东西和不显示哪些东西。 然后这个其实就是对 u 一 体这个界面的一个简单的一个介绍。呃,然后,呃具体更深入的后面可能会再结合具体的工程项目去讲。

这一个视频会录制二进置。首先,二进置文件读写的本质,它是通过将各类型变量转换为字节数组,并且将字节数组直接存储到文件中。它的特点是不仅可以节省存储空间,而且提升效率,并且还可以提升它的安全性。而且在网络通讯中,我们直接传输的数据也是用字节数据,就是二进置的数据。 各类型数据和字节数据相互转换,用到的是 bit converter。 如果是说将各类型转成字节的话,那它用到的是 get byte。 字节数组转为各类型的话,它是 to int。 那 标准编码格式编码是用预先规定的方法将文字、数字或其他对象编成数码,或将信息数据转换成规定的电脉信号。 为保证编码的正确性,编码要规范化、标准化及需有标准的编码格式。常见的编码格式有 a s, c i i a n s i, g b k g b 二三幺二、 u t f 杠八等等。游戏开发中用编码格式的是 u t f 杠八。中文相关的编码格式是 j b, k。 英文相关的编码格式是 a s, c i i。 在 c 井中有一个专门的编码格式类来帮助我们将字母串和字节数组进行转换。它的类名是 encoding, 用到的命名空间是 using system text。 代码中的文件操作是第二个代码中的文件操作是做什么的?在电脑上,我们可以在操作系统中创建、删除、修改文件,可以增删、查找各种各样的文件类型。 那这些类型该怎么来做呢?文件相关操作的公共类就是 fill, 也就是文件的公共类。它用到的命名空间是 system 点 i o。 文件操作类的常用的内容。首先我们要判断一个文件它是否存在,用的是 exists, 创建文件是 create, 写入文件是 write our text。 读取文件,我们读取字节的话,用的是 read our lines。 读取所有文本信息的话就是 read our text。 删除文件用 delete, 复制文件用 copy, 那 copy 它里边是有两个参数的,首先第一个它是需要流关闭的状态,首先你这个路径的是 application dot path, 它的路径,再加上它的文件名字的路径是哪个?文件是不是?然后第二个参数,它是目标文件,第一个是我们是现有的文件,第二个是目标文件 啊,我们来看一下。第六个是复制文件,用的是 copy, copy 的 话它有两个参数,第一个参数它是现有的文件,第二个参数它是目标的文件,第三个它就是实现处,那文件替换用的是 replace, 以留的方式打开文件并且写入或提取。用的是 open, 这里边的第一个就是它的路径,第二个是打开模式,第三个是访问模式,它的路径的话 application, 点 data ps, 加上你的路径。第二个参数就 fill mode, 点 open 或者是 create, 它的模式的话 feel assess 点 right, right 是 写入读写读写 ok, 我 们再来看什么是文件流。在 c 井中提供了一个文件流类型,它是 feel stream 类,它主要作用于用于读写文件的细节, feel stream 可以 以读写字节的形式处理文件。 接下来就是 feel stream 文件流类型常用的方法,它的类名是 feel stream, 它需要的命名空间就是它引用的命名空间是 system 点 i o。 首先第一个打开或者是创建指定的文件 它的方法,第一个方法就是我们要新建一个 new view stream, 里边有几个参数,第一个参数它是它的路径。第二个是打开模式,打开模式里边有几种 create new 创建新的文件,就是如果要是文件不存在或者是报错的话,我们就要创建新的文件。 create 创建文件,如果这个文件它是存在的,那么就会覆盖文件。 open 打开文件,如果文件不存在的话就会报错。 open or create 打开或者创建文件,根据实际的情况去操作 append, 若存在的文件则打开并查找文件尾,或者是创建一个新文件。春 k, 打开并清空文件内容。 第三个参数它是访问模式。第四个参数它是共享权限,它的权限有不共享。 read, 允许别的程序读取当前的文件。 write 是 允许别的程序程序写入该文件。 read write 就是 允许别的程序写入或者是读写它的该文件。 这里做了一个示意,也就说第一个参数就是它的路径,第二个参数它的模式,第三个就是它的访问模式。共享的话,一般情况下是不需要的哈。嗯,对, ok, 用第二个方法就是用的是 create, 这里边也是有几个参数,第一个参数他用的还是路径,第二个参数呢,他就是内存的大小。第三个参数就是描述如何创建和覆盖文件,这个呢,也不常用,所以他基本上也不会写入了。对,第三个方法就是 feel open, 这里用的两个参数,一个是路径,一个是打开模式。 ok。

方块破坏王都玩过吧,来带你做简易版。这期会比较难,谨慎使用滑鼠来到 s add, 右键 create folder, 命名完成后点开,然后去物件区新增方块和球,这个是平台,调大小后挑颜色, 把方块移至左上角,然后新增一个空。借助 script 先从南的写,改名是在刚刚见的 folder 操作 来到 public, 新增一个 game object, 我 给它叫 box。 这个城市码是复制方块,然后 float 两周的移动变数,我给它叫 move x move y 不要打空格,记得删,给他移动距离设定一下小数,后面加 f, 再新增数量变数, x 轴要几个, y 轴要几行, 再写个计量变数和总数,而这个就不用 public, 因为是运算,再 start 计算总数,总数就是个再相乘, 然后回去低行,忘了最重要的找再轴,再新增一个 o x 轴,等下说原因,去 start 定位 x y o x 轴等我打, 接着来 start 等我想下回去看下变数名称,我脑子不好好了,如果计数少于总数就做事。 这行式复制,把 bullet 改成刚刚 public 的 box, 把设置位置改成 x y, 容俺思考。技术加一,然后 x 加一次移动距离,向我上面打二,依次加二,然后如果一排后就作势直行一排。技术除以行数于零, 就把麦向下移动,移动距离是 m y。 这片场还好,酒窝 一期要几小时,想学的支持赞一下。接着因为刚刚 o d x 都在原位,所以把 x 定到 o d x 的 位置。好的,我额外讲,我给你画个图,没定位它会这样,虽然它会往下,但是是在之后的位置。 回来城市拉上去后,把方块拉去 box 执行。好的,为什么会这样呢?因为 x transform 是 在他自己的位置,而不是在 box 的 位置开始,所以把所有都加上 box。 但为什么会这样呢?点到场景看,幸好有颜色,那这就知道是复制到平台,不是方块。把方块拖到 box 好 了,接下来简单些,先给方块换个颜色,以免他阴我。再新建一个城市码, 用完之后给平台上碰撞机。这次不用力学写了,用坐标,又是输入法新增变数 x y 一 样定位 x y, 如果按 x 减一反之 中间省略,你们都会回到上面写写 transform position, 改变它的位置。完成后再新建弹力球的代码。二 d physical material 给球上 reach body 和碰撞机 妈的冲突了。新增一个代码, 宣告 f 等下用的是乱数,来 update 打这行括号里面是乱数的范围,我将它弄成正负十 重点,接着去括号外打正几行 grana ga cube, 它这样是碰到 cube 就 做。接着回来将方块 tag 新增 add tag cube 点旁边一下,再回去 cue at attack cue 删掉这行,然后在最上面 reach body 二 d 下去括号内写 r b velocity 破胡内用乱数让它乱弹。 喵的,我错了,在旁边盖墙盖完上碰撞机 新建城市码,这个是消除方块,去 update 外面写这行 run 改包,注意球的 type 要改包。不会的,去前几分钟看方法相同 内容改成删除这个物件 看好的,我做完这个视频才想起解决方法,将平台 tag 改成 player。 我 重打了一遍,看准这样它左右乱弹,但固定向上 原本也是能玩,只是多给你一个方法。 let's see you open it up。

仅靠和 ai 对 话,能把游戏做到什么程度?期间会遇到什么样的问题?又该如何解决这些问题?我会从这个视频开始,尝试去探索这些问题。用一个最简单的游戏当起点,不断丰富玩法, 不断完善细节,直到 ai 再也无能为力,整个过程我会全部展示出来。那么废话不多说,现在就开始。首先还是创建一个空的 unity 项目模板,还是选二 d 项目名字随便起一个。 关于 ai 能不能做三 d 游戏,我尝试了一下,遇到的问题比较多,要做的话有太多地方都需要人工兜底,所以我这边暂时先不考虑去做三 d 游戏。 项目创建好之后,不需要在 unity 编辑器中做任何操作,只需要打开项目所在的文件夹, 然后在里面放入几个简单的脚本和规范 ai 的 文档,等复制到项目里之后,再去看一下文档的内容。 这里在项目目录中用 vs code 打开,再点开这个 agents, 点 md 文件,现在里面只有十几行简单的规则。 此前我一直想在里面设计一套通用的流程,让 ai 能够实现改功能,测试有问题就返回修改的闭环,再增加了上百行规则、 数百行脚本后,执行流程变得越来越厚重,效果却始终不尽人意。所以在这个新的项目中,我只保留了必要的流程和规则。后续项目开发过程中,如果 ai 多次出现同类问题,再考虑把解决方案加到规则中。 规则文件就先说到这里,在开始与 ai 对 话之前,还需要先去执行一个脚本,这个脚本是用来促使化 git 版本管理库的运行一下就能促使化 git 设置,忽略目录看提交 git 准备工作就做到这里。 现在进入到与 ai 的 对话,不需要精心设想发什么消息,能够大致表达出自己的想法就行,反正就算效果不理想,后续也能去修正。 这里我就直接让他先做一个俄罗斯方块上去,等他开始工作后,先去把 unity 关掉,不然会妨碍 ai 执行命令。等他工作完成后,会复制一份当前项目的镜像目录,到时我们打开镜像目录看游戏运行效果就行, ai 的 回复就不看了,现在去打开镜像目录看看游戏运行效果。关于镜像目录的说明,我在斗地主那一期视频有详细介绍,这里就不多说明了。 当前的规则中依然会要求 ai 执行测试,但是只保留了一个固定且通用的测试。这个测试就是实际去运行游戏场景,短暂的等待加载后, 对游戏画面截一张图,但不再要求 ai 去分析截图,因为图片中即使很明显的错误, ai 也会一本正经地说画面很正常。而保留这个测试最大的用处是能够避免运行场景后游戏直接报错。 在测试中遇到报错后, ai 能够直接再回去修改代码,回到 unity 这边。现在去运行游戏试试,能够看到游戏没有划边框,但实际会有隐形的边框限制移动的范围,其余的操作基本没什么问题,消除方块也正常。 先回来让 ai 把边框加一下,顺带把方块画得好看一些。稍等片刻,截图更新后能看到当前运行后的预览。不管 ai 的 回复,先回 unity 简单试试, 不需要操作 unity 编辑器中的其他地方,所以直接全部显示游戏界面就好。简单试了一会,运行的很正常,但我玩的比较菜,经常把落点看错,所以再让 ai 在 落点加一个辅助虚线, 很快就加好了,再去简单试一下功能没什么问题。接下来我想在右侧加一个 ai 自动操作的面板,顺便把我的面板移动到左侧,大致意思表达清楚就行。 在右边的预览能提前看到游戏运行时的样子应该是不太正常,不过还是实际去运行试试。 ai 似乎没有把我的面板移到左侧,导致我的面板被挡住了一半,并且 ai 自动操作的实力有点太强了,得降低一下它的速度才行。 回到汉 ai 的 对话后,我突然意识到像这样展示和 ai 反复拉扯的过程也没什么营养,并且这样剪视频还特别累, 所以后续我想换一种方式,把对话纸截一张图片标注是第几轮对话,而视频中就专注于那一轮对话后游戏的实际运行效果,像是接下来要发送的是第五轮对话,就只在画面上这样显示,几秒钟 之后就直接运行游戏看效果。这一轮我只要求 ai 把重叠问题解决一下,并建议他把两个面板分别移到最左侧喊最右侧,然后就直接在 unet 中运行,看效果。能够看到现在不再重叠了, 但是并没有按我要求的移到最左侧喊最右侧,然后到第六轮对话,让他把下一块预览加一下,顺便再改一下界面,改完后运行游戏。现在面板的上方显示了几个有点变形的方块,应该就是下一块的预览了, 面板放在左右两侧的需求倒是改的还可以。那么进入第七轮对话,我要求他把预览显示在棋盘旁边,上面加一个下一块的提示,再把预览方块大小不一的问题修复一下。 现在两边的下一块预览都变得很正常,只剩一个 ai 速度太快的问题。第八轮对话就让他把速度调慢一点, 改完简单试了一下,发现 ai 速度还是很快。第九轮对话,我直问他是不是调错了参数, 结果改完后 ai 直接变成了归宿。正常来说,武汉 ai 下落的速度应该保持一样,区别只有决策的速度才对,但现在他直接把下落速度也改成了极慢。第十轮继续要求他修改 ai 的 速度, 这次修改后, ai 的 速度看起来还行,接下来可以去做点新功能了。回到汉 ai 的 对话,既然是要做新功能, 那还是新建一个对话最好。在新对话中需要汉 ai 先简单说明情况,想了想,与其我人工去说明,不如让上一个对话的 ai 来总结情况, 让他写一个总结文档,在下一个对话中直接让他参考文档就行。生成的文档我就不看了,只需要知道文档的名字,告诉下一个对话的 ai 就 行。 这次要加的新功能有点复杂,并且具有一定的独创性,所以要把功能需求细致完整的跟 ai 说清楚。 不过我也不是很擅长这种具体的描述,都是凑合一下说个大概就行。还有很多细节都要靠 ai 自己去脑补,据说 ai 有 时候能够脑补出意想不到的好效果,所以模糊的描述也不一定全是坏事,就先写这么多 刚刚生成文档的算作第十一轮对话。这个就算是第十二轮,从第十三轮开始就换回用截图的方式来展示对话,后续开启新对话前也会让 ai 自己补充一下文档,视频里就不再详细展示过程了。 现在回到 unity 看看效果,底部隐约能看到有东西,应该是显示到游戏画面之外了。切到场景试图倒是能看到下面对战的方块,但是只看到了一条路。第十三轮对话,我想让他把分路画出来,还有战场太靠下的问题解决一下。 现在战场确实能显示出来了,也划出了三条路,但是下路战场空间太小了,需要想办法弄大一点。第十四轮对话,我想到的是把俄罗斯方块的面板往上移一下,给战场多腾出一些空间, 结果改完后看着并没有什么变化,看样子还是需要更细致的描述才行。第十五轮对话,我直接让他把每条分路设置为三个格子的高度数据,具体一点的话 ai 就 很难糊弄过去了。 现在战场区域的大小就差不多了,但是底部空了不少,还需要让它再调整一下。这时我突然想起来,游戏还没有设置分辨率,应该先固定一个分辨率,不然位置就白调了。 第十六看第十七轮对话,我先问了一下当前用的分辨率,然后让 ai 自己去设置一个合适的分辨率,顺便让它把战场改成贴着底部。 现在位置差不多了,但感觉俄罗斯方块的面板稍微有点小了,基地也只有小小的一点。第十八轮对话,让他把基地看俄罗斯方块的界面弄大一点。现在基地确实大了, 但有一部分显示到屏幕外了。第十九轮对话让他把基地的显示范围调一下, 改完后基地显示的基本没问题,虽然不好看,但美观问题等后续放入美术资源再说。现在我想试试消除一行汉多行会不会有区别, 结果是没看到区别。第二十汉。第二十一轮对话,我先问了一下他有没有写区别,他说消除多行会生成多名士兵,我问他是不是叠一块了,说明确实是叠一块了。 这次再试一下消除两行,能够看到确实出了两个士兵,不过我刚刚想起来,这并不是我需要的逻辑,我需要的是消除几行就出几级的士兵, 消除四行则试出一个英雄。单位在第二十二轮对话跟他说明这个规则,并要求他写个测试功能,能够直接按键出兵。简单测试了一下 功能,应该是没什么问题。现在不同级别的士兵就是大小不一样,英雄则是更大更量、更快。后续 ai 如果能持续做下去,我想给每个级别的士兵都设置多种类别,让这个游戏能真正好玩起来。 第二十三轮对话,我希望给士兵焊基地,加上血条运行后没有看到基地的血条,士兵的血条倒是能够显示了。第二十四轮对话只说没看到基地血条,现在血条倒是有显示了, 但数字显示的有问题,并且血量还不会减少。第二十五轮对话,让他把刚刚两个问题修复一下,顺便把结束后重新开始游戏做一下。 现在基地血条的数字正常显示了,我出动一堆士兵攻击基地试试,敌方基地血量归零后报错了,我大概知道什么问题,不过要交给 ai 去解决。第二十六轮对话,只说让他去修一下, 再出动大部队去攻击,试试还是会报错,并且错误比刚刚还要更严重的样子。第二十七汉二十八轮对话,我让他去找报错姓习,他没有找对位置,我只能再说让他去找 unty 的 报错姓习,他看到错误后会直接去修复, 现在再试一下出动大部队攻击,还是报错了,这次和第一次的报错一样,第二十九轮对话直接让他再看一下就行, 改完后再试一下,这次没有报错了,按钮也显示出来了,但是结束后游戏还是在不断执行,并且元素也没有清空。第三十轮对话,让他去修复一下刚刚的两个问题, 再出动大部队去攻击敌方基地。现在的情况是战场的士兵都被清空了,而 ai 还在自动进行操作,点击重新开始试试。重新开始后,俄罗斯方块面板的元素还是没有清空。第三十一轮对话 继续让他修复刚刚发现的问题,继续出动大部队攻击敌方基地。结束后画面都停止了,再重新开始试试,画面上还是遗留了上一轮的方块。第三十二轮对话,让他再去清空一下棋盘。 来来回回的操作可能有点无聊,这些问题人工编辑代码也经常会遇到,也不能怪 ai 总是没写好,至少现在只需要多给 ai 发几句话就能修复,现在再来试一下重新开始。这次界面上的遗留元素应该彻底都清空了, 游戏现有功能看起来都没问题了。接下来我想先去改进一下规则,像是刚刚出现的报错,主要是 ai 使用了错误的方法,如果不在规则里指出正确的方法,后续 ai 可能还是会犯相同的错误。这里我先让他对之前的错误做一个复盘, 然后就可以根据他指出的姓习来想办法优化现有规则。直接跟他说前两个报错问题,我希望能通过规则来规避掉。 然后他的写法我觉得有点过于复杂,所以我跟他说只需要指出正确的做法是什么就行。这次他给出的规则就简洁了很多, 但是我想到后面可能会再加很多类似的规则,如果都加到 agent 点 md 文件里可能也不太好,那就直接问问他加在哪里合适。他说写到 agent 点 md, 为了尽可能保持 agents 点 md 的 简洁,还是让它写到新建的文件里比较好。 agents 点 md 里只要说明遵守 rules 点 md 的 规范就行。 不过这种东西该怎么规范,主要还是看个人习惯,并没有哪一种做法就一定更好的说法,反正也不需要和别人合作,随意就好。这个文件写好后是一堆乱码,只要使用中文就时常会出现这种问题。 让 ai 修复一下的同时,顺便让它在 agents 点 md 里规范一下编码问题,规范好之后应该就不会再出现这种问题了。 这一期视频暂时就先做这些,虽然现在游戏还相当简陋,但后续一定会越来越像一个正经的游戏,也欢迎大家在评论区提出建议,我们下一期再见!

这里是本课程的第一课,也就是 dump 出文件, dump 就是 一切的起始。本次视频一共演示了三种工具使用方法,首先的话要修改分析 unity 游戏的功能,第一步一般就是要 dump 出文件, 如图, dump 就是 把 libr, cppd 和 meddta 打打文件,重新组合成一个 c 文件。 现在从安装包看一下这两个文件, 这个就是 librcp 里啊, 这是 medd 对 文件 常见的 dump 工具,分为三类,静态模块和动态。静态是大部分游戏可用的,但是近几年的游戏对静态当铺上了保护模块,当铺也可以当铺, 大多静态当铺不了的游戏,如果还有一些加固对 a p i 进行混淆的话,这里可以采用动态 dump 来。我试过了一些加固和某异盾都是可以的,但保护更强的,如元神类游戏要进行更深刻的研究, 现在就来演示一下。第一种静态挡普工具,我们需要在游戏安装包里先把前面讲的 u r c p 和 mate data 文件移动到一个文件夹里, 打开工具,找到这个路径,路径里显示 u r c p 文件,点击选择。 这里不知什么原因被保护成黑屏了,工具会出现两个选项,都选 y 就 行。 已经当铺到该路径了, 这就是当铺出来的文件, 里面主要包括类名函、数字段。 接下来看第二个工具模块 dump, 这是个 i s p 模块,需要去 i s p 开启它, 开启模块选择目标游戏,随后进入游戏。 进入游戏后不久就已经完成当铺了,当铺路径是游戏的 data 数据目录, 可以看到当铺文件,看一下时间。 接下来就是第三种在进程中逆出结构来进行动态 dump, 这是我写的一个 lua 动态 dump 脚本,大概原理就是搜索 dl 字符串逆出类名结构后获取类结构中的方法和字段。知心看看, 已经获取到了类结构,获取到后逐个输出, 缺点就是速度较慢。 以上就是本期全部内容,感谢观看。

有粉丝给一哥留言说,小学游戏开发,巧呢,一哥以前也开发过游戏,所以这一系列视频就带领大家从零开始开发一款 rpg 游戏,那么这个呢,就是游戏的一个画面,我们接下来就做一款这样的游戏啊, 好了,那现在我们正式开始啊,此次开发所使用的软件呢,是云的 3 d, 为什么采用这一款软件呢?是因为现在很多公司,很多游戏公司开发游戏呢,就是使用云的 3 d 进行开发的,所以呢我们也使用云的 3 d 进行开发。好,那么现在我们来创建一个游戏项目啊,创建一个游戏项目呢,非常简单,我们点这个 new project 啊,创建一个新项目。好,这里面我们在项目设置这里面设置一下项目这里面呢 啊,我们写一下项目的名称,这个名称可以随便写啊,我就随便写一个,好吧,我就写一个,比如说 h heroes 啊,英雄哈, ok, 然后这下面的是 location, 是 位置啊,就是你这个游戏项目放在哪个文件夹下面,这跟我们平时写这个 java 写 python 是 一样的哈,就创建一个项目,给它选一个文件夹 啊,那么这里面呢需要有一个 universal, 有 个组织哈,其实就是你需要有一个注册一个账号啊,就是使用的三 d 呢,需要注册一个账号。好,那么现在呢,我们来点这 creator project 创建项目,点击一下, ok, 好,那么现在呢创建项目呢,需要点时间哈,好,创建完之后呢,就会打开我们的编辑器哈,其实就是打开我们的编辑器,这里面需要点时间,因为它需要去装一些包哈,我们稍微等待一下好了,终于把这个编辑器打开了哈, 我们做第一件事情啊,就是把这个 redmi 给删掉啊,这个 redmi 把它删掉。 好,删完之后呢,我们跟大家介绍一下这个 unit 三 d 编辑器的主界面啊。 如果说大家用过一些三维软件,你会发现这个界面和很多三维软件的界面很相似啊,比如说这个,呃, blend, 呃,这个,比如说这个 c 四 d 啊,你会发现和它界面很相似啊,其实用着三 d 呢,其实我们也可以把它看作是一个三维软件,它其实是一个可以编程的三维软件 啊,我们可以来在这里面写代码。呃,我们就来介绍一下它主界面哈,我们先从上往下开始来介绍。我们先看第一了啊,我们先来看第一栏啊,第一栏这是什么东西呢?哎,这个东西其实就是我们允允的编辑器的标题栏, 那标题栏里面呢,所呈现出来的信息还是蛮丰富的啊,首先是它的这个项目的名称啊, hero 项目名称,然后后面呢,跟的是它支持的平台,就是它支持哪些平台哈,就 windows, macos, linux 都支持。那后面是跟的是 unit 版本,我们使用的是最新的版本啊, unit 六点一啊。然后再后面呢,其实就跟的就是这个图形的接口啊,这里是 d x, 其实 direct x 啊,其实就是 direct 叉啊,十 i 这个图形接口的版本。 那么 director x 呢?其实是这个微软所提供的图形化接口啊,这个是标题栏。好,那么接下来我们再来看这个第二栏,第二栏其实是菜单栏啊,菜单栏呢,如果说大家用过一些软件啊,不管用什么软件啊,比如说, 呃,一些编辑器啊,不管是用这个 id id 啊,还是用 pr 叉呢,这样的编辑,这样的编辑器啊,都会有这个菜单栏,对吧? 啊?猜在哪里面?就是放各种功能哈,我们简单的给大家看一下啊,虽然是英文,但是英文都比较简单啊,比如说我们看第一,第一项啊,就 file, 就是 文件啊,这里面,比如创建项目啊,保存项目啊,在这里面,然后这个是 edit 啊, 就删除,删除啊,复制啊,粘贴这些东西,然后这是 assets 啊,这个就是资源哈,资源资产,然后呢? game object, 游戏对象啊, 有些对象,什么东西?有些对象其实就是比如说里面的人物啊,比如说里面的一些道具啊,多属于游戏对象啊,然后这是组建啊,然后这个是服务,这个是任务这个窗口,然后这是帮助 啊,好,那么这个菜单栏下面,那么菜单栏啊往下走呢,就是我们的标,就是我们的工具栏,工具栏里面什么东西呢?我们介绍一下几个重要东西。工具栏,然后 这个第一项是 unit unit six, 也就是我们的版本啊,然后这个是账号啊,也也就是说你使用这个 unit 三 d 需要先注册一个账号啊,那么这个呢,其实账户的名称啊,我这个是 f 开头啊,然后就是 asset store 啊,就是资源商店,这资源商店是干什么用的呢 啊?也就是说我们其实如果说啊,缺什么资源,可以在这个资源商店里面去下载啊,到这个下载有些是免费的,有些是花钱的啊,就有点像我们这个 app store 是 一样的啊, 然后我们再来看后面这个,其实啊,这个呢,其实有点像我们的播放器啊,这个就是播放啊,这个是暂停啊,这个呢就是下一下一步哈。 ok, 工具,来我们介绍这里面,然后我们再来看下面的窗户,下面的窗户呢,就是一些比较重要的窗户了哈。啊?我们先来看这个,看这个啊,这个窗户, 这是个什么窗口呢?这个英文单词比较难念啊? high rank 啊,比较难,不太不是很好念啊,翻译成中文是层级的意思,所以我们这里可以把它看成是层级窗口。那么层级窗口是个什么东西呢?啊?其实它有点像我们的这个软件编辑器啊,代码编辑器,比如说, 呃呃,使用这个 idea 啊,比如说 java 里面的 idea, 这个编辑器啊,它其相当于它这个我们打开一个目录树啊,它其就相当于这个目录树,是一样的啊,它就是把你这个游戏里面对象啊, 他把他这个层级关系啊全部展示在这里面。好,那么这个右边呢?右边这个 scene 啊, scene 窗口 scene 是 什么意思呢?是场景的意思啊,他就有点像我们的这个,呃,代码编辑器的这个右边啊,就是显示这个代码地方,对吧?那么这个呢,其实就是显示这个游戏,显示这个游戏的画布哈 啊,显示这个游戏,或者说显示这个游戏的画面,那么我们的这个游戏对象呢,都会出现这个画面里面啊,比如说这个就是一个,比如说这个啊,这个就是一个游戏的对象了,对吧?我们在这个啊信创,信创口里面就可以进行编辑拖动啊,拖动我们里面的游戏对象啊,把它放在一个合适的位置上面去。 好,然后我们再来看一下它简安装上的一个窗口,叫 game 窗口啊,这个东西是什么东西呢?这个东西其实就是,呃,用来玩游戏的哈,就是我们这个游戏编辑完之后,最终所呈现出来的效果,它有点像个预览窗口啊, 这样所呈现出来的效果就在这里可以看见,我在这里可以玩这个游戏。好, ok, 那 么现在我们再来看这个下面哈,下面这是什么呢?下面这个是个 jack 项目的意思,项目什么东西呢?哎,项目里面哈,有两个非常重要的文件夹哈,一个是 assets, 一个是 package, 那 么 assets 是 资源资产的意思哈,这个资源资产放什么东西呢? 哎,其实就是放这个游戏相关的非常的丰富,比如说这个 模型文件,比如说这个纹理文件,比如说我们的这个脚本文件,代码文件啊,比如说我们用 c shop 写一个逻辑脚本啊,那么其实也是放在这里面,还有一些比如说音频啊,啊,也是放在这里面,这个都称之为资产, 那么这个呢,是一些包哈,就是我们要做开发嘛,对不对?因为 unit 三 d 呢,它其实是,呃,它的这个逻辑哈,是通过代码来实现的,跟这个动漫不一样,动漫它是没有逻辑的,你看那个动漫,它其实是 啊,就直接放,对吧?没有这个逻辑,没有这个交互在里面的啊,所以啊,没有代码。那我们这个呢,因为它有逻辑在里面啊,人可以跟这个画面进行交互,所以它这个有代码在里面的好,然后再看这边啊,这个是控制台 啊,控制台呢,其实就跟我们代码编辑器里面控制台是一样的,比如说游戏在运行过程中一些调试信息啊,就可以就会在这里面展现出来。 ok, 然后我们再来看这边啊,这个 inspect, inspect 是 审查的意思哈, 如果大家用过一些这个浏览器啊,浏览器里面有个 inspect element, 就 审查元素,对吧?啊,其实就是看元素的各种属性,这个也是一样的啊, 这个 inspect 审审查器啊,就审查,那它既可以看这个游戏的游戏对象的一些属性,现在这里面呢,我们把鼠标放在这里面哈,现在变成空白了,对吧? 我们这里面点击一个游戏对象,这里面这是一个游戏对象,我们放在把鼠标放在这个游戏对象上面,然后这里面我们可以看到这个游戏对象的一些属性,当然这些属性是可以进行调节的啊,看上去很多,我们可以把它折叠一下,那太多了是吧?折叠一下啊,折叠之后就变少了,对吧? 啊?这个我们先解释一下这个 transfo 啊,随便挑一个出来解释一下 transfo, transfo 是 转化的意思,通过这个 transfo 呢,我们其实可以对这个游戏呢进行这个位置的移动啊,以及进行旋转,进行缩放啊,都可以的,我们尝试一下来啊,比如说我们现在 往这个 x 轴上面挪动啊, y 轴上面挪动,对吧?然后呢,比如说我们先旋转啊,沿 x 轴旋转啊,比如说我们先缩放都是可以的哈,那么这个呢就是通过 这些属性的设置啊,我们去改变这个游戏的游戏对象的一些特征,那么这个呢就是关于我们用的编辑器的这个界面布局的一个介绍,那么下一个视频呢?我们再接着来讲这个游戏的开发,这个视频我们就到这里面,大家有什么问题呢可以在评论区给一哥留言。

问大家一个问题,你们觉得用 unity 搭 ui 界面方便吗?如果有一天, unity 的 界面可以像写网页一样 html css 前端框架随便上会怎样? 今天来看看这种配合方案。 unity 负责三 d 渲染和交互, html 负责界面, 我们只把 unity 当成三 d 引擎交互界面,也就是 ui 层交给本地浏览器渲染。它的优点很明显, 第一,界面开发效率爆炸,前端生态太成熟了。第二,样式灵活复杂, ui 数据面板、响应式布局轻松搞定。第三,非常适合数字孪生工业系统展示型应用。 当然,有需要额外注意的地方,通信问题, unity 和网页之间要频繁消息同步,部署调试会有点麻烦。但是我觉得省区和 unity 的 ui 纠缠,这些都是小问题, 所以结论很明确,它不是用来做游戏的。但在数字孪生工业系统开发等应用场景中,这套方案非常香。 如果你正在被 unity ui 折磨,也许是时候换个思路了。你觉得怎么样?评论区聊聊,如果感兴趣的人比较多,后面可以出一期聊聊具体实现。

那么重要的属性和方法呢?文本字节的长动用的是点儿 length, 是 否可写用的是点儿 can read。 是 否可读用的是点儿 can write。 将字节写入文件,当写入后一定执行一次点儿 flash 关闭流,当文件读写完毕时,一定要关闭它,那就是点儿 close。 再一个就是要缓存资源销毁回收的一个方法,用的是点儿 dispose, ok。 再看写入字节, 用 write 的 话,它有三个参数,第一个是写入的字节数组,第二个是数组中的开始,所以第三个是写数,写入多少个字节,写入字母串时, 它用的是 encoding, 里面也是有三个参数,跟上边差不多都是一样的,对, ok。 那 接下来看读写字节,这里边也是有几个参数 来看一下。首先呢,我们是用到的一个方法,它用到是 open 读写里边呢,第一个是它的路径,第二个是它的打开模式,第三个是它的读写模式, ok。 第二个方法是一次性读取,在二个挨个读取。 第三个是更加安全的使用文件,对象就是用。接下来是文件操作是指的是什么?平时我们可以在操作系统的文件管理系统中,通过一些操作的形式来对文件进行增删查改。 那它这里用到的命名空间就是 using system 点 i o, 它的类名是 directory。 首先还是判断文件夹是否存在的是 exists, 创建文件夹是 create directory。 删除文件夹用的是 delete, 这里如果要是用 delete 的 话,它有两个参数,一个是它的路径,第二个参数就是它实现是否要删除,如果是将整个目录删除的话,那是 false。 如果是删除非空目标的话,是处。查找文件夹和文件用的是 get directories, 移动文件夹用的是目录,那这里会做两个东西,它的就是两个方法,它的对比, directory info 和 fill info, 它的对比, 那比如 directory info 目录信息类,我们可以通过它获取文件夹的更多信息,它主要出现在两个地方,一个是创建文件夹方法的返回值,第二个就是查找上级文件夹信息。最重要的一个方法是得到所有此类文件的目录信息。 fill info 文件夹信息类,我们可以通过 directory info 得到该文件下的所有文件信息。 ok, 接下来我们来看叙利亚化的方法,我们叙利亚化用的是 serification, serification 反叙利亚化,这里是用到的是 deserilize。 deserilize, ok, 那 看反。呃,先看叙利亚。叙利亚化的话,它是对象的第一步呢,它就是要先声明对象,声明对象需要添加的一个特性是 system 点 serilisable。 虚拟化对象的第二步,它是将对象转化成二帧制。第一个方法就是使用内存流得到二帧制数值,主要是用于得到字节数值,可以用于网络传输的一个方法,内存流的对象和二帧制格式化对象。内存流的对象,它用的是 memory stream。 memory memory stream 二进制的格式化的对象用的是 binaryformater, 使用文件流进行存储。反序列化,反序列化之反序列文件中的数据,主要它的类是 fieldstream。 文件流二进制格式化的类,它用的 binaryformater, 一 样的,跟序列化是一样的。呃,它的主要方法是 deserilize, 对,这里呢我想是解释一下,就是叙略化和反叙略化,他说的是什么?叙略化,也就是说你要保存这个文件,要保存到某一个路径去存储上他,而反叙略化就是把你存储的这些信息,这些数据来读取出来,这就是叙略化和反叙略化。最后再聊一下加密,我们是什么时候要加密?我们什么时候要解密? 当我们将类对象转化为二进置数据时进行加密,当我们将二进置数据转换成类对象时进行解密。加密的话,它不是百分之百的保密的数据,因为它只能是能提升你一定的安全性,因为这一个只要你找到里面的加密加密规律的话一定能够解密, 所以说它只能是提升一定的安全性。常用的加密的算法有, md 五 s h a e h m a c。