- 博客(113)
- 收藏
- 关注
原创 AB包相关知识
比如A包中a资源依赖B包C包,A包中b资源需要D包E包,使用如上代码会导致加载a资源时,也会加载不需要的D包E包。如果一个模型在A包中,其材质在B包中,那么只加载A包中的模型资源会丢失材质。这里的model包中的Sphere存储是红色的球,所以会加载一个红色的球。这里需要注意:AB包的加载不适用异步加载,只有加载资源时才使用异步加载。主包依赖关系文件只能记录包与包之间的依赖关系,至于包中资源具体依赖关系是不知道的。加载对应包——查找对应包中的依赖关系——加载对应依赖包——记录加载过的包。
2026-05-24 17:52:43
408
原创 导航系统/NavMeshAgent组件
Unity 的导航系统给 3D 场景的 AI 寻路提供了一个相当不错的解决方案。需要导航的对象我们称之为 agent(代理)。我们可以(在编辑环境下)为不同类型的 agent 为烘焙静态的场景,并产生一种名为 NavMesh 的资产。NavMesh 是一种数据结构,描述游戏世界的可行走表面,并允许寻路。
2026-04-23 23:25:07
448
原创 Animation动画窗口/代码控制动画/Animator/2D序列帧动画/2D骨骼动画/Ik反向动力学(Spine)/换装
每个动画文件都有自己的生命周期,从开始到结束。在时间轴上可以编辑动画过程中各个阶段的状态变化。定义为“动画在时间轴上的某一个时间节点上处于的状态”,即关键帧是定义动画重要状态的时间点,后续通过插值生成中间帧。关键帧记录的是的(位置、旋转、缩放等)Unity(或任何动画系统)通过计算两个关键帧之间的中间状态。
2026-02-28 01:52:51
738
原创 3D动画流程/动画分层/动画混合/子状态机/IK使用/动画匹配目标/状态机行为脚本/状态机复用/角色控制器
①把模型拖入场景中②给模型添加Animator脚本③创建一个Animator Controller文件④点开Animator Controller文件并把需要的动画剪辑拖进去(一个动画文件里可能包含多个动画剪辑)⑤给各个动画剪辑之间设置连线与切换条件注意:要是动画没有在动画页签中选择把运动烘焙到根上,那可能会运动起来,如果不想让他运动的话,也可以直接Animator脚本上的选项。
2026-02-27 17:04:59
663
原创 导入3D模型时相关参数设置/Model标签页/Rig标签页/Avatar相关参数/Animation标签页/Materia标签页
项目说明作用不创建或使用任何 Avatar 化身系统结果模型无法播放 Humanoid 动画,相当于没有骨骼映射适用场景临时禁用、或后续手动指定注意选此选项后模型无法正常播放人形动画。
2026-02-15 11:59:17
737
1
原创 Math与Mathf/三角函数/屏幕坐标系/向量及计算几何意义/四元数与欧拉角/画线调试
Math是类,Mathf是结构体——这是数据结构上的不同Mathf中包含了几乎所有Math中的数学计算方法,同时还额外添加了一些适用于游戏开发的数学计算方法——所以我们开发中一般使用Mathf函数。
2026-02-11 11:32:13
672
原创 延迟函数/协同程序/多线程/特殊文件夹/资源加载/异步加载资源或场景/LineRender/范围检测/射线检测
描述:存放在运行时需通过Resources.Load动态加载的资源,但使用 Resources文件夹中的资源会增加构建体积,因为这些资源会被包含在构建文件中,即使在运行时并不一定用到这些资源,且使用Resources文件夹的资源会被打包到游戏的所有平台版本中,因此要谨慎使用。卡顿的原因是:从硬盘将数据读取到内存的过程需要进行计算,而资源越大,耗时越长,从而导致掉帧或卡顿。中一种常用的碰撞检测技术,核心原理是发射一条虚拟的"射线"(有起点和方向的无限长直线),检测这条射线是否与场景中的。
2026-02-10 01:51:29
680
原创 C#进阶:预处理指令/反射,Gettype,Typeof/关键类
定义:指导编译器在实际编译开始前对信息进行预处理的指令语法特征:以#号开头不是语句,不以分号结束常见用途:代码折叠功能就是预处理器指令的应用执行时机:在源代码编译之前执行。
2026-02-08 10:41:05
712
原创 UGUI——进阶篇
Drawcall:字面意义上就是绘制呼叫的意思,表示CPU通知GPU简单来说,CPU准备渲染数据,GPU开始渲染这样一次过程就是DrawCall如果游戏中DrawCall数量较高会影响CPU的效率,最直接的感受就是游戏会卡顿:拷贝 10,000 个 1KB 的小文件(总大小约 10MB)→ 虽然数据量不大,但耗时很长。:拷贝 1 个 10MB 的大文件→ 几乎瞬间完成。每个小文件的拷贝都需要额外开销,比如分配内存、创建文件句柄、更新目录等。
2026-02-03 16:45:16
656
原创 Input(键盘及WASD/鼠标及滚轮)/屏幕/Camera/光源/碰撞检测/音频相关
如果要图片大小对应鼠标——需要将光标图片设置一致,保险起见,还要给图片设置Cursor的材质类型。
2026-01-26 23:52:15
782
原创 Unity入门 :场景叠加/预制体资源包/脚本资源/生命周期函数/Inspector页面
在编辑模式下,把对应场景拖拽进来,方便我们复制对应预制体进入场景。
2026-01-23 16:19:13
1169
原创 C#进阶:委托delegate/事件event/匿名函数/lamda表达式/List排序/协变和逆变
/想用list这个自带的排序方法,那我就必须要去继承一个排序接口,去实现一个排序的规则//返回值的含义//小于0:放在传入对象的前面//等于0:保持当前位置不变//大于0:放在传入对象的后面//可以简单理解为 传入对象的位置就是0//如果返回负数 就放在它的左边(前面 升序)//如果返回正数 就放在它的右边 (后面 降序)return 1;//自定义类的排序//排序方法 在类中要继承IComparable接口i++)
2026-01-22 11:13:08
909
原创 C#进阶:多线程
线程定义:操作系统能够进行运算调度的最小单位线程特性:被包含在进程之中,是进程中的实际运作单位一条线程是进程中单一顺序的控制流一个进程中可以并发多个线程主线程:我们目前写的程序默认都在主线程中执行执行特点:每个线程都是独立的代码执行管道。
2026-01-21 12:50:16
853
原创 C#进阶 简单数据结构与泛型
Stack是一个C#为我们封装好的类,它的本质是Object[]数组,只是封装了特殊的存储规则。Stack是栈存储容器,是一种先进后出的数据结构——即先存入的数据后获取,后存入的先获取。这里还讲了有参构造函数与无参构造函数,值类型(struct)无参构造公共函数,相关内容。这样可以理解参数化类型的含义——即声明T是什么类型,然后该类的变量T就是什么类型。与Stack(栈)的概念非常相似,一个是先进后出 一个是先进先出。:下面两个泛型的使用:都是先声明类并告知泛型,然后在实例化对象。
2026-01-19 14:39:06
1087
原创 C#核心:多态
让继承同一父类的子类们,在执行相同方法有不同表现同一父类的对象,执行相同行为有不同表现:让同一个对象有唯一行为的特征如果想要父类中的Atk方法保留执行,则在子类中base.Atk()如果不需要保留,则不需要base.Atk()。
2026-01-18 16:58:08
872
原创 C#核心:继承/里氏替换原则/继承中的构造函数/万物之父与装箱拆箱/密封类
一个类A继承另一个类B:1、A将会继承类B的所有成员2、A类将拥有B类的所有特征和行为称为:父类、基类、超类称为:子类、派生类注意:子类可以有自己的特征和行为ABBCAC。
2026-01-17 22:57:56
629
原创 C#核心:成员变量的行为和特征/构造函数/成员属性/静态成员/静态类/扩展方法/重载运算符
这里就是给Test类(自定义类)扩展了一个方法,然后一个t(Test类实例化对象)调用此方法// 为 int 拓展了一个成员方法// 成员方法是需要实例化对象后才能使用的// value 代表使用该方法的实例化对象Console.WriteLine("为test拓展的方法");t.Fun3();class Test。
2026-01-17 17:30:17
937
原创 C#进阶:协程与事件
不难发现,其中的IEnumerator和yield return部分看起来很是奇怪,和一般的函数不太一样。如果返回值不为或者缺少都不会称为一个协程;为了解答这个问题,我们需要了解这个IEnumerator的真面目。
2026-01-14 12:28:20
981
原创 C#进阶——内存
我们编写代码时所用到的数据是存放在哪里的?为什么每次重新开始游戏时各个变量都会恢复到初始值而不会被保存?其实我们定义的所有变量,不论是一个数字还是一个复杂的类,它们都是被存储在电脑里称作内存(memory)的这个区域的!内存其实不过是一块很大的,由 0 和 1 组成的数字序列。其中的数据并不是永久的。当我们定义一个变量时,该变量的值会被编码为一串二进制数字并存入内存的某个位置里。这个位置称为变量的地址(address)。
2026-01-07 15:28:46
1131
原创 欧拉角 四元数 (飞镖设计)
欧拉角是 “给人看的旋转描述”,直观但有致命缺陷(万向节死锁);四元数是 “给计算机用的旋转计算工具”,不直观但稳定、高效、无缺陷;面板 / 配置用欧拉角(方便调试),代码内部转成四元数执行旋转(保证效果)。
2025-12-13 10:22:12
618
原创 Arpg第六节——逻辑流程
注意名字和排列都要对上,否则脚本中的awake方法无法正确获取组件与点击事件相关的UI触发方法将名字背景image调整好位置后,点击按钮如下Image要进行提前设计,最多容纳几个字后设置UI框大小——查看当前字号大小和UI框大小最多和最少字的容纳情况决定是否采用这里使用如上对齐方式,以便后续加载不同长度名字都可以正确显示文本效果聊天内容文本框对齐方式如上所示用空物体(Option)预设好按钮区域然后布置按钮选项栏物体Option中添加组件如下,组件设置如下会使选项增添或减少都能正确呈现。
2025-10-14 18:09:07
811
原创 Arpg第六节——方法合集
初始化组件引用,获取对话界面中姓名文本、内容文本、三个选项按钮以及选项根节点的 UI 元素。接收一组对话数据,保存为当前对话内容,并开始显示第一条对话(调用 DOUpdate)。更新对话界面:设置说话人姓名、逐字显示对话内容(使用 DOTween 动画)。并在内容显示完成后根据传入的命令数组动态显示/隐藏选项按钮,并为每个按钮绑定对应的点击逻辑(如关闭对话、打开商店、触发战斗、跳转场景或跳转到其他对话节点)。当对话界面启用时,通知相机控制器显示自定义光标(通常用于互动提示)。
2025-10-14 18:07:06
853
原创 方法合集——第七章
这里自己加了一段:根据切换后场景名称不为Init,才决定是否要加载角色——因为退出并存档时会进入Init场景,照样会调用创建角色的方法,但此场景中没有GatePoint所以会导致报错。在第三章的基础上,修改了导入的参数(新增了切换之后的场景名,是否需要重置,以及场景切换后将触发的事件),另外还用了state参数用于判断当前场景是否位于加载状态。(.NET 底层程序集)里提供的工具类,专门用来一次性完成“文件级”操作:读、写、复制、删除。字段设置为一个平台无关的、持久化存储路径下的。
2025-10-14 18:06:08
1290
原创 Arpg第五节——流程
玩家特效实现逻辑详解:1、将各个技能动作的特效作为1001的子物体2、通过显示面板用于显示这些特效3、最后将这些特效全部在0.9进度注销掉。
2025-09-29 10:20:21
989
原创 Arpg第五节——方法
/ 方法实现...继承自Editor类,表明这是一个 Unity 编辑器扩展添加了菜单项,可以在 Unity 编辑器的 GameObject 菜单中调用。
2025-09-29 10:20:14
1278
原创 Arpg第四章——方法合集
单发模式矩阵队列生成原理GetAtkTarget 该段代码作用是根据其他方法中传递来的相关数据(比如操作点位置、时间插值。贝塞尔曲线公式),绘制曲线(数据和可视化上同时进行)
2025-09-10 11:46:38
896
原创 第三章 UI框架设定——方法合集
BagItem类继承与接口实现的定义类1、先来注释背包栏拖拽到装备栏2、再注释背包栏到快捷栏Remove_Equip移除装备方法添加背包项目AddBagItem
2025-08-27 23:09:06
1062
原创 第三章 UI框架设定 流程逻辑
1、给Main物体中添加SceneController脚本其中当前场景中的EventSystem是自己手动创建用来控制UI面板的事件系统的2、给Camera组件加入UCameraController脚本3、设置buildingsetting来控制场景4、Game场景中创建。
2025-08-27 23:08:26
990
原创 MVC结构变种——第三章核心视图及控制器的整体逻辑
了一个新类型;只是一个声明创建实例时第一次访问静态属性 `Instance` 的时候:在 MainViewController.Instance 第一次被访问(即执行到 MainViewController.Instance.Init(...))时,才创建 MainViewController 实例。设置资源路径和回调。
2025-08-10 13:25:15
405
原创 Arpg第二章——流程逻辑
效果:当触发时,当前类的方法会被调用2、触发当玩家角色释放普通攻击和技能时,在:是否存在this:当前对象(很可能是技能施放者或状态机):当前状态关联的技能数据3、为AI角色提供以下核心功能1.2.
2025-08-02 17:45:36
1089
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅