- 博客(213)
- 资源 (12)
- 问答 (11)
- 收藏
- 关注
原创 VSCode+Cline+MCP初探与解决MCP服务安装不上的Bug
由于AI火热趋势,不得不学习下AI。这篇小文是记录初探Cline的过程图,有一些步骤、自己的简单见解、遇到的bug很久没写文档,行文不太通顺流畅,以及有些地方解释说明可能有错。
2025-03-22 22:08:09
1229
原创 Addressable(15)构建布局报告、常见问题总结(分组压缩策略)
AB包太多(包体太小)的问题每个包都会有内存开销,如果加载过多的包可能会带来更多的内存消耗并发下载的问题,如果包小而多,以为着下载包时可能需要更多的时间目录文件会因为过多的包而变大,因为它要记录更多的包信息复用资源的可能性更大,比如多个包使用同样一个资源,但是该资源不是寻址资源,那么在每个包中都会有该资源AB包太少(包体太大)的问题过大的包如果下载失败,下次会重新下载,因为使用UnityWebRequest下载包时不会恢复失败的下载比如100MB的包,下了50MB,玩家中断下载了,下次又得重新下。
2024-02-19 00:11:53
1478
原创 Addressable(14)事件查看窗口、分析窗口
事件查看窗口对于我们来说很有用我们可以通过它来排查内存泄露相关的信息比如场景中对象都被移除了,但是事件查看窗口中还有AB引用相关的信息,那证明存在内存泄露可以排查加载和释放是否没有配对使用分析窗口对于我们来说也很有用当我们打包后,我们可以通过分析窗口工具分析AB包中的资源分布是否合理根据分析结果自己处理一些潜在问题。
2024-02-19 00:09:10
1024
原创 Addressable(13)自定义更新目录和下载AB包、引用计数规则
Json文件加载AB包、图集、资源、场景、实例化对象所用的脚本(会通过反射去加载他们来使用)AB包中所有资源类型对应的类(会通过反射去加载他们来使用)AB包对应路径资源的path名Hash文件(发布远程才有)记录什么目录文件对应hash码(每一个文件都有一个唯一码,用来判断文件是否变化)作用更新时本地的文件hash码会和远端目录的hash码进行对比如果发现不一样就会更新目录文件补充当我们使用远端发布内容时,在资源服务器也会有一个目录文件。
2024-02-19 00:07:23
1820
原创 Addressable(12)根据资源定位信息加载资源、几种加载Addressable方式、Async Operation Handle
1. 查找指定键的资源位置2. 收集依赖项列表3. 下载所需的所有远程AB包4. 将AB包加载到内存中5. 设置Result资源对象的值6. 更新Status状态变量参数并且调用完成事件Completed- 如果加载成功 Status状态为成功 可以从Result中得到内容- 如果加载失败 Status状态为失败 如果我们启用了 Log Runtime Exceptions选项 会在Console窗口打印信息
2024-02-19 00:03:14
2697
1
原创 Addressable(11)资源更新(热更AB包)、强更与热更概念
玩家手机的应用程序不用重新下载完整的安装包(600M需重新安装游戏),只需由游戏自动下载最新的AB包(10M左右且不用重新安装游戏)即可给玩家手机上实现资源更新和热更代码更新。更新的游戏内容只有:资源、热更dll这些资源,这些资源需要重新打热更AB包并同步更新到玩家的手机上。(而此节所讲的整包更新、局部更新则是应用在这:更新资源改动的AB包并同步给玩家的手机上)Addressables会自动帮助我们判断哪些资源更新了,并加载最新的内容。玩家需要下载一个包含很多的资源的AB包,内容较大,比较耗时耗流量。
2024-02-18 00:06:01
2071
原创 Addressable(10)从服务器加载资源AB包
使用的typecho搭建的网站,开放端口是80。(这步需要网上搜索)记得需要勾选Build Remote Catalog。再Unity中运行程序,即可从远程服务器中加载AB包。记住使用的192.168.3.83与58474端口。可以用网页访问.json文件,查看是否能访问。我的服务器是linux,就跳过视频中的步骤。使用addresable的hosting。上传打包的文件到服务器网站目录下。成功加载模拟服务器的AB包资源。有文件目录,也有bundle。远程服务器加载AB包过程。构建应用程序并且测试。
2023-12-11 00:38:58
605
原创 Addressable(9)资源打包理论与本地应用
资源c如果是图集,应该被重视,不同包的内容使用同一个图集中的图片时,需要一个专门的图集包。当发布应用程序时,会自动帮我们将AB包放入StreamingAssets文件夹中。(缺少ab包,运行构建的exe程序,加载不了物体,但我测试新版的应该也可以加载)打包时:不会自动将AB包放入StreamingAssets文件夹中,需要。即:一个组中有场景资源和普通资源时,场景资源和其它资源始终被分开打包。不用打AB包,直接本地加载资源,主要用于开发功能时和学习。现在addressbale。此打AB包过程自动化了。
2023-12-11 00:33:55
682
原创 Addressable(8)Addressable Hosting可寻址托管窗口配置
介绍一般情况一般资源服务器需要将其搭建为http服务器、这样才能进行资源的上传和下载Addressable Hosting作用而Unity为了简化本地测试的这一过程,提供了快捷搭建http服务器的工具通过它我们可以将我们的本机模拟为一台远端服务器来进行远端发布加载测试,可以帮助我们快速的进行远程打包下载的相关测试简单理解作用简单理解就是把本机作为一台资源服务器如果我们要在本地模拟远端加载使用Addressable Hosting窗口 创建本地托管将本机模拟为远端服务器。
2023-11-27 00:24:21
493
原创 Addressable(7)Packed Assets打包资源数据配置
基本介绍打包资源作用确定如何处理组中的资源比如:可以指定一个组生成AB包的位置和包压缩相关的等等设置当前组从哪里加载和打AB包的位置设置创建空白组模板给新创建的模板Add Schema添加组模板到列表中Addressable窗口新建分组时可选我们创建的分组通过Packed Assets我们可以了解到为每一个组设置打包和加载的路径,远程加载还是本地加载,都在组中进行设置。
2023-11-27 00:21:01
729
原创 Addressable(6)AddressableAssetSettings数据设置_参数相关
简介对可寻址相关功能进行设置大概分为概述配置——决定了路径配置相关诊断相关——决定了调试相关目录相关——决定目录后缀等内容内容更新相关——决定了更新相关方案构建和编辑器模式脚本相关——决定了测试方案资源组模板——决定了创建组时的配置模板。
2023-11-22 00:28:56
364
原创 Addressable(5)Profile概述窗口配置
在哪里保存构建的AB包运行时在哪里加载AB包可以添加自定义变量,以便在打包加载时使用我们之后在设置组 中打包和加载路径相关时,都是使用这里面的变量Profiles窗口中配置的变量决定了我们之后 打包加载AB包时的路径。
2023-11-22 00:21:58
284
原创 Addressable(4)动态加载单个、多个资源
可以根据资源名或标签名资源类型来加载所有满足条件的对象可以根据资源名标签名资源类型合并模式 来加载指定的单个或者多个对象。
2023-11-21 00:29:10
1240
原创 Addressable(1)导入Addressable
选择Asset Management - Addressables - Groups。点击create Addressables settings。找到加载的Addressables,点击安装。打开packageManager。选择Unity Registry。勾选Addressable。安装成功可以看到示例工程。
2023-11-20 00:26:25
317
原创 ProtoBuf编译生成Google.Protobuf.dll与Protoc.exe、自定义生成代码规则
是一种可以将自定义的结构体序列化(反序列化)成字符流(byte[])的中间工具。对比JsonXML二进制,在序列化速度上更快,占用内存上更小,但相对而言操作更麻烦。由于Proto工具提供的语言支持,支持用户可以在不同的语言中对同样数据结构进行序列化和反序列化。本文目的下载Protobuf开源库,编译生成使用C#语言序列化和反序列化对应所需的dll(Google.Protobuf.dll)和应用程序(protoc.exe)
2023-11-08 23:43:41
2600
2
原创 Git设置PreCommit 以防热迭代提交主工程代码 - Windows环境
打工时,在项目的热更迭代分支,提交了主工程的代码,导致热更失败出错延迟开服时间此文档目的以防下次再犯,所以需要一个在非Master分支(热更分支),提交主工程代码时候提醒我,待手动确认后再提交的功能。
2023-11-03 21:43:17
614
原创 Hazel游戏引擎(123)C#脚本属性在编辑器面板可见、Mono热更新dll
此节目的为完成在编辑器面板上可以显示C#脚本类的属性,对属性的值修改,C#脚本会热更新(mono4.5api支持)如何实现使用mono的api,根据类名获取和设置属性的值实现细节由于C#类类型名称有点不太一眼看出什么意思,所以要自定义类类型,并用map来进行C#类型名称标识转换。比如:C#的float空间名+类名是->,需转换我们自定义的类名称**“Float”。**自定义的类名称需接近C++类名,容易标识。
2023-08-15 00:09:17
815
原创 Hazel游戏引擎(122)C#分离游戏和核心库代码
此节目的将C#游戏代码作为新工作空间的项目,并引用C#核心库的项目1个C#核心库项目1个C#脚本项目里面脚本调用C#核心库的函数,从而实现脚本功能像Unity开发时,Unity有一套自己的dll,我们写脚本需要using UnityEngine;,调用Unity库dll才能实现相应效果如何实现使用premake5快速制作实现细节当分离了C#游戏代码和核心库代码,那C++加载dll从一个变成两个得到C# dll的Mono类应该区分是获取C#核心库程序集的 Mono类。
2023-08-15 00:08:09
628
原创 Hazel游戏引擎(121)C#获取实体的组件
此节目的由上节根据UUID获取实体的translation在根据wsad调整实体的位置此节优化上节所做,实体的translation应属于实体的TransformComponent,所以此节需要在C#创建组件类用UUID,C#组件类对应cpp的组件类。为完成像Unity的C#脚本API能在C#获取当前实体在cpp的Rigidbody2DComponent组件并C#可以通过组件实例对象操作实体比如给实体添加物理冲力。
2023-08-15 00:07:32
544
原创 Hazel游戏引擎(120)将C#脚本融入ECS
此节目的为实现C#脚本WSAD能控制实体的位置变化如何实现使用118节C++内部调用C#的函数功能,实现C++调用C#脚本的OnCreate、OnUpdate函数的调用。使用119节C#内部调用C++的函数功能,实现C#的WSAD能调用C++函数修改实体的位置。有利于理解本节重点的代码初始化Mono准备,需得到MonoDomain、MonoAssembly、MonoImage// 0.1设置程序集装配路径(复制的4.5版本的路径)// 0.2声明根域// 存储root domain指针。
2023-08-15 00:07:03
398
原创 Hazel游戏引擎(119)在C#调用C++内部函数
此节目的上一节实现了cpp调用c#函数这一节要实现C#调用cpp内部函数,这样才可以算得上脚本封装类封装加载构建mono环境、Mono类ScriptEngine类封装 加载构建Mono环境类ScriptClass类封装 加载C#类成Mono类 的类封装,C#调用cpp内部函数,需向C#提供的接口,成为类如何实现(带有例子)
2023-08-15 00:06:47
414
原创 Hazel游戏引擎(118)Mono实现C#脚本、Github加速
此节目的hazel实现能cpp能调用C#的函数(C#语言嵌入cpp中),需要安装mono.Net库,并克隆git上的mono项目自己构建导出mono库。需要.Net库和构建的mono库Cherno所做用visual studio构建mono项目导出mono静态库,静态链接,而不是像peter一样使用mono安装路径下文件夹下已有的mono库。(为什么要静态库,因为当前引擎就是用静态链接)相关链接Peter的讲解mono。
2023-08-15 00:05:21
872
原创 Hazel游戏引擎(115)维护项目和合并,模板、模板参数包、函数参数包、参数包转发、扩展参数包、折叠表达式、lambda函数
此节目的为了进入下一个新功能,需要先维护好项目要维护或者完善的地方复制一个实体的所有组件代码、复制一个场景的所有实体的所有组件代码优化有一个组件就要调用一次函数,很麻烦取消链接当前目录下的vulkan的lib直接链接vulkan安装路径下的lib删除按键重复因为按键重复总是返回false,可以删除KeyEvent的按键事件检测不到重复事件。
2023-08-14 23:49:43
445
原创 Hazel游戏引擎(113-114)物理模拟模式
此节目的增加一个物理模拟运行模式来运行给物体添加的物理效果,摄像机使用编辑模式下的摄像机。区分Play运行模式的物理效果这个模式的摄像机会变成场景里的主摄像机,而不是当前的编辑相机。关于物理模拟模式渲染的场景部分物理模拟模式下:渲染的场景和编辑模式下一样物理模拟部分物理模拟模式下:物理模拟和Play模式下的部分一样所以物理模拟模式编辑模式和Play模式下的交集,物理模拟模式也要复制当前编辑场景。如何实现添加一个图标、一个状态来控制实现细节物理模拟模式运行时再点击Play模式应无bug。
2023-08-14 23:48:58
394
原创 Hazel游戏引擎(112)可视化包围盒
此节目的实现一个复选框点击后,场景可以渲染出图形相应的包围盒如何实现使用上两节加的渲染Line和Rect来渲染盒状包围盒。至于圆的包围盒,一样绘制圆,只不过控制厚度,从而实现圆环形状=圆包围盒实现细节渲染包围盒的代码应放在哪?应放在编辑层,而不是场景层。场景层是渲染场景内的物体的,而至于包围盒不属于场景,若放在场景里,需要向编辑层获取是否显示包围盒的控制, 这样会导致紊乱。放在编辑层,等渲染物体后再渲染包围盒,这使得物体与调试相关的渲染分开,更好扩展。重点。
2023-08-14 23:48:45
521
原创 Hazel游戏引擎(111)添加圆形包围盒
此节目的为了承上启下,在编辑场景显示实体物理组件的包围盒,更好调整包围盒的参数实现想要的结果。此节只完成了在面板上显示调整包围盒参数,下一节才渲染了包围盒如何实现使用box2D的API,先得到圆形对象,设置半径,再被赋给fixture当参数实现细节需添加圆形组件需设置圆形组件的属性面板圆形组件需被序列化yaml和解析yaml以后要做的由于有20左右个组件,若每次添加一个组件都得设置新组件的属性面板有点麻烦,需要考虑建立一个表用for循环,简化代码。
2023-08-14 23:48:16
319
原创 Hazel游戏引擎(110)渲染Line和Rect
此节目的要给当前引擎添加能渲染线条方框功能。渲染方框是在渲染线条的基础上实现的为什么当前的物体包围盒需用线条、方框显示,提供友好的视觉功能以后使用引擎的人员可能会需要射线检测,在编辑场景时就要看到射线的效果,相当于gizmos。线条、Rect如何画先说quad怎么画OpenGL的API画Quad需要提供索引缓冲区,会有重复的索引被使用线条使用OpenGL的API画不需要提供索引缓冲区,只需要提供顶点数组就行。同quad一样,顶点位置可以重复利用,两个顶点位置确定一条线Rect是用。
2023-08-14 23:47:36
305
原创 Hazel游戏引擎(109)渲染2D圆Circle
此节目的给引擎添加渲染Circle图形如何实现对项目来说:用批处理,同quad的顶点坐标与布局,但是shader的fragment阶段,控制在一个圆圈输出颜色。抛开项目说:用Quad顶点包围一个范围作为画布(Canvas)用glsl控制画出一个圆alpha为1,圆外的范围的alpha为0。实现细节运行时需要拷贝circle组件,序列化和解析yaml-cpp时都得加上circle组件的代码。circle的shader具有顶点属性。如何画圆请点这。
2023-08-14 23:47:23
442
原创 Hazel游戏引擎(108)开始、结束、复制场景
此节目的为实现点击运行,复制当前场景成为运行场景,点击结束销毁当前场景。在当前场景复制实体最重要的如何复制场景,复制场景需要复制当前场景的所有实体及其包含的组件,但是当前的entt库不包含复制组件的API,所以我们需要手动写复制实体。如何实现复制场景entt的注册表起关键作用entt::registry创建新场景,为新场景创建和旧场景同名和uuid的实体,并用map存入(旧实体的uuid对应新实体)的关系遍历旧场景所有uuid组件的旧实体,用旧实体的uuid-map-对应新实体获取旧实体的。
2023-08-14 23:46:53
387
原创 Hazel游戏引擎(107)UUID唯一标识
什么是UUID可以理解为全球唯一标识为什么要使用UUID标识实体 = 此节目的为了点击运行场景,实体发生位置等变化复原而要实现的标识功能为什么不简单的使用increment递增假设从0开始,游戏分发到两个电脑,他们创建实体标识id,需要知道从多少开始递增,需要服务器提供权威多少开始递增,这样的设计不太好,不想多一个服务器功能,所以只需使用uuid。uuid发生的冲突很小,所以不用担心两个电脑创建实体的id一样如何实现定义UUID类,使用cpp的随机函数,随机ID实现细节。
2023-08-14 23:46:20
350
原创 Hazel游戏引擎(106)Box2D
网址Box2D库此节目的实现2D物理效果如何实现使用Box2D库引入项目之中实现细节实现物体效果需要rigidbody和box2dcollider两个组件添加了rigidbody和box2dcollider两个组件,需要修改面板以及序列化代码以后要实现:每次运行结束后可以重置物体的位置。
2023-08-13 21:41:50
479
原创 Hazel游戏引擎(105)PlayStop按钮
此节目的为了物理效果能可以运行,这节需要完成工具栏的UI,点击播放运行和停止物理效果(后几节做)。如何实现使用ImGui的API,渲染OpenGL的加载纹理实现细节按钮应该在中间按钮适应窗口大小、放大时应使用线性插值保证不那么模糊按钮图片透明背景按钮针对hover、click有不同效果。
2023-08-13 21:40:32
363
原创 Hazel游戏引擎(103)实体的材质
前前言由于开发引擎,渲染是一部分,所以前期跳过了给实体附加材质功能,从而开发其它比较重要的部分,其它基础功能写好后,再回到渲染部分写好渲染代码是正确的选择。由于2D和3D的纹理不一样,所以要设计一个好的纹理系统目的为完成101节所说的拖动内容面板上的材质给实体,实体表面会显示这个材质如何实现同102节实现拖动场景文件到viewport视口一样只需要在实体的属性面板上设置数据源目标接受拖过来的文件路径然后加载这个材质,再drawcall绘画出来。
2023-08-13 21:37:03
468
原创 Hazel游戏引擎(102)内容面板和ImGui拖放+Icon
此节目的为完成101所说的,拖动材质赋予实体,需先完成拖动这个功能,因为项目已经有打开场景函数,所以此节完成拖动场景是否能打开场景。如何实现使用ImGui的Api实现细节看后面的Bug合集最主要的是:PushID区分不同按钮在ImGui_Demo.cpp中可以看到拖动代码如何实现的。
2023-08-13 21:36:07
836
原创 Hazel游戏引擎(101)内容面板显示资源文件和文件夹
前前言Cherno改变视频方式,就是用直播方式来做接下来的视频,而不是先在直播前想好写好,再录制另一个视频用来Copy和解释直播写的代码。此节目的为了实现quad有纹理,要实现像Unity那样拖动纹理的文件 到 实体的组件下就能生成纹理组件。此节为完成此目的,需先完成显示本地assets文件夹下的文件夹和文件。如何实现用ImGUI渲染由C++的fstream检索处理的文件和文件夹。参考C++的fstreamAPI网站。
2023-08-13 21:34:08
295
Java推箱子小游戏课程设计
2023-07-16
Unity麦扣-3DRPG-角色扮演游戏.zip
2023-02-03
Android-个人简介自我介绍APP-附PPT
2023-02-03
CocosCreator三消小游戏-3.6版本-Ts
2023-02-03
Python平板电脑数据分析源码+数据集+文档+课程设计
2022-11-25
Vue3待办列表-日记与便签-LOL英雄资料-课程大作业
2022-08-09
HTML-必胜客-静态网站
2022-05-13
Web-购物网站-课程设计(源码+论文)
2022-03-12
Android-QQ-课程设计(源码+论文)
2022-02-23
Web前端-课程设计-网易严选(部分)
2022-02-07
PHP-LOL英雄资料网站-课程设计
2022-01-13
Java射击小游戏源码
2021-12-30
Java-贪吃蛇AI-课程设计(源码+文档)
2021-12-30
Android-图书馆选座-课程设计(源码+论文)
2021-12-30
Java小游戏-炸弹人-课程设计-论文-AI
2021-12-29
Introduction to 3D Game Programming with DirectX 10(中文版)
2019-04-27
jquery的jstree怎么获取选中节点的值!
2017-03-04
web的项目的权限分配排版
2017-02-20
谁知道怎么制作dx的cube静态环境图
2017-02-15
mybatis在struts2中有错
2016-11-14
还是VS2012的问题,创建项目都出错
2016-11-07
Android的滑动listview整个页面都动起来
2016-10-22
Android的viewpage使用
2016-10-19
vs2012打开项目出错。
2016-10-18
c++结构体的内存对齐问题
2016-10-12
Direct11的顶点描述与内存对齐
2016-10-12
Android的ListView使用
2016-10-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人