- 博客(105)
- 资源 (1)
- 收藏
- 关注
原创 【Unity博客节选】Timeline 内部结构 IntervalTree 分析
Unity的 Timeline 本质是一个包含很多可播放片段(Playable Clip)的区间树(IntervalTree),这个区间树可以排序、搜索、以及控制所有 Clip的激活与停止,最后利用底层的Playable系统,运行所激活的Clips,就是这么个东西。(当然这么定义不够准确,IntervalTree不控制clip激活,只是排序和搜索clip。IntervalTree本质是装clip的容器,不考虑性能的话用数组也行。这么定义只是方便理解Timeline的底层结构罢了)
2025-06-01 08:55:58
1145
1
原创 【Unity博客节选】Timeline 的 AnimationOutputWeightProcessor 理解
AnimationPlayable的权重处理Timeline构建graph过程中,对每个OutputTrack创建对应的playableOutput节点后,如果是动画track的话,最后会为PlayableOutput注册一个权重处理回调m_EvaluateCallbacks.Add(new AnimationOutputWeightProcessor(animOutput)),构造AnimationOutputWeightProcessor时将AnimationPlayaleOutput的权重设为0
2025-06-01 08:54:26
952
原创 【博客节选】自定义 timeline track 与 PlayableBehaviour数据交互
我们在自定义Track 自定义PlayableAsset时,可能有这么个需求,Track或PlayableAsset自身需要拥有特殊属性,而且能在后面的生命周期中获取这个特殊属性。比如我的技能系统用的SkillPlayableAsset,有个参数标注这个clip用于技能的哪个阶段,就需要SkiIlPhase这么一个参数,后面behaviour回调触发时就能根据这个参数针对性做处理。
2025-05-31 10:04:57
1028
原创 【Unity博客节选】Timeline 的 Traversal mode参数
TraversalMode:Mix/Passthrough,表示遍历节点input的方式,Mix就是将各输入进行加权;passthrough就是匹配input与output,第几个output来请求数据,就从第几个input获取数据。Passthrough目前只用于TimelinePlayable,使之成为graph的统一入口。
2025-05-31 10:03:24
598
原创 【Unity博客节选】Playable系统 UML类图与结构分析
本文简要分析了Unity Timeline底层Playable系统的核心结构,重点介绍了PlayableGraph和Playable节点的组成与交互机制。PlayableGraph作为运行时框架,由PlayableDirector驱动构建,通过TimelinePlayable作为根节点连接混合器与子Playable。Playable节点作为数据载体具有多端口连接、权重控制等特性,并支持不同类型的扩展实现(如AudioClipPlayable等)。文章还通过UML类图展示了Playable系统的层次关系,为理
2025-05-30 10:56:08
1014
1
原创 【Unity博客节选】PlayableGraph 的生命周期
本文分析了Unity Timeline的核心结构和PlayableGraph的生命周期机制。重点探讨了PlayableGraph的8个关键生命周期回调:GraphStart/GraphStop - 图开始/停止时触发PlayableCreate/PlayableDestroy - 可播放对象创建销毁时BehaviourPlay/BehaviourPause - 可播放行为开始暂停时PrepareFrame/ProcessFrame - 每帧数据准备和处理时
2025-05-30 10:54:35
812
原创 【Unity博客节选】Timeline 静态结构分析
本文分析了Unity Timeline的静态结构及其底层实现。文章首先介绍了Timeline资产文件的树形结构,其中根节点为TimelineAsset,包含TrackAsset子节点,每个Track又可包含多个PlayableAsset。作者通过PlayableDirector组件展示了如何将Track绑定到游戏对象,形成完整的Timeline工作流。随后,文章详细解析了PlayableAsset的UML类图关系,重点说明了TimelineAsset、TrackAsset和各类ClipPlayableAss
2025-05-29 09:09:14
1083
原创 【Unity博客节选】Playable Graph Monitor 安装使用
本文介绍了使用Playable Graph Monitor工具分析Unity Timeline的Playable Graph结构。通过对比官方PlayableGraph Visualizer,作者指出两种工具构图方式的差异:Visualizer从PlayableOutput反向构图,而Monitor从叶子节点正向构图。文章提供了工具安装指南和测试案例,演示如何创建混合动画的PlayableGraph。作者建议优先使用Monitor工具,虽然存在输出端口显示问题,但能更清晰地展示Graph结构。
2025-05-29 09:07:40
845
原创 【博客节选】Timeline 总览与术语解析
包括底层的Playable系统,其在c++端,封闭黑盒,暴露部分API给c#端使用,Timeline就是利用这些API实现的功能。详细来看,Timeline侧主要由PlayableAsset、PlayableBinding、TrackAsset、PlayableDirector等组成;Playable系统侧主要是Playable、PlayableOutput、PlayableGraph三部分组成。
2025-05-28 03:25:50
308
原创 【Unity Blog】第二十五 · Timeline 结构及其源码浅析
搭配各种结构图、UML类图,深度剖析了 Timeline 和 Playable 系统:- 详细展示了 Timeline 和 Playable 各个类的 UML 关系- 系统梳理了 Timeline 静态和运行时结构与逻辑- 详细分析了 Playable、区间树 IntervalTree 等内部结构- 验证了很多细节,比如 AnimationOutput weight 作用、ScriptPlayable 生命周期、Passthrough TraversalMode 的效果等。
2025-05-28 03:16:25
1913
原创 【Unity实战笔记】第二十四 · 使用 SMB+Animator 实现基础战斗系统
本文使用SMB+Animator 实现了基础战斗系统,涉及状态机的结构、代码实现及核心控制逻辑。以及效果展示和bug解决。
2025-05-22 14:32:27
1039
3
原创 【博客节选】再谈Unity 的 root motion
如果不应用root motion,不bake into pose,就是一个原地动画,①不动和②也不动。当xz bake into pose后,角色攻击动画与父节点产生偏移,动画结束后,模型还会瞬移归位。如果应用root motion,不bake into pose,那就是②跟随①运动。如果不应用root motion,bake into pose,①不动,②动。如果应用root motion,bake into pose,①不动,②动。根节点运动(Root Motion)
2025-03-23 15:04:06
1153
原创 【Unity实战笔记】第二十三· root motion变更方向攻击 (OnStateMove + rootmotion + rigidbody 使用的一些问题)
本文探讨如何在攻击抬手瞬间可以自由改变攻击方向, 使用OnStateMove + rootmotion + rigidbody ,以及其中遇到的问题,并再谈对root motion的理解
2025-03-23 15:03:04
743
原创 【Unity Bug 随记】使用Rider debug功能时Unity Reload Domain卡死问题
检查是否使用unity version control版本控制系统(VCS),使用的话删除这个包,再尝试,如果能正常断点调试,说明确实是VCS的问题。如果VCS对你很重要,同时使用rider debug功能卡死,可以将VCS降级到[2.3.1] - 2024-02-27。
2025-03-20 18:30:45
644
原创 【Unity离线渲染器】Octane for Unity 排坑(注册、证书申请、安装)
Unity使用Octane 异常复杂迷惑,官网多数差评就在此,Octane 论坛对unity的讨论已多年未更新。经过我半天的不屑努力与排错,终于找到一种比较靠谱的方法。
2024-12-15 03:33:28
1221
原创 Unity党注意,还有不到一个月赶紧领UE的Quixel Megascans资产
UE 新增了Fab商城,原先免费的Quixel Megascans将在明年年初开始收费。还剩一个月窗口期,没收到消息的赶紧注册领取。
2024-12-07 21:48:04
1211
原创 【Unity Bug 随记】unity version control 报 xx is not in a workspace.
仓库重命名导致unity version control 报 xx is not in a workspace错误. 导致update功能无法使用
2024-11-13 17:33:59
904
原创 Unity humanoid 模型头发动画失效问题
一开始我是尝试过在模型Optimize Game objects手动添加缺失的头发骨骼的,奈何不起作用。当然这种方法只能针对原模型动画,其动画骨骼层级和模型骨骼层级都是一一对应的,额外骨骼无法用于动画复用。但我以前似乎看过一个up处理过类似的问题,重新设置的Avatar Mask好像,一时也没找到。头发摆动的是generic模型和动画,不动的是humanoid模型和动画。当时又注意到上面的Mask选项,感觉像是所谓的Avatar Mask。然后又折回使用generic模型和动画了。还行吧,比不能用好。
2024-11-02 21:26:58
556
原创 【Unity实战笔记】第二十二 · 基于SMB的角色控制中遇到的一些问题(斜坡移动鬼畜、落地卡顿、角色突进、头发动画失效等)
本文紧接上一篇 Unity实战笔记 · 第二一,补录后续遇到的一些问题。
2024-11-01 10:11:31
1389
原创 【博客节选】Unity角色异常抖动问题排查
关闭cinemachine发现跳跃抖动消除了,说明确实是cinemachien的问题,搜索 “ unity cinemachine aiming jittery ”,发现是。首先区分是角色本身抖动还是镜头抖动(对比scene和game窗口,关闭cinemachine插件等方式)动画抖动:将动画loop关闭,合理裁剪动画保留1个关键帧即可。移动抖动:用物理方式更新位置和旋转,animator组件的。水平运动可以,跳跃和降落时的垂直运动依然存在抖动现象。角色本身抖动,分动画抖动和移动抖动。
2024-10-24 20:05:50
2239
原创 【Unity实战笔记】第二一 · 基于状态模式的角色控制——以UnityChan为例
本文用UnityChan角色,以实际案例展示角色控制的不同构架,包含非状态模式、简易状态模式、普通状态模式、基于SMB的状态模式。涉及的技术有 cinemachine、new InputSystem、SMB、Animator State Machine。
2024-10-24 19:58:05
1089
2
原创 物理引擎一些散乱知识点
【物理模拟】PBD算法详解Gauss-Seidel迭代求解线性方程组物理引擎之约束求解(一)——线性互补问题约束问题优化罚函数法—内点、外点Physically Based Modeling: Principles and Practice Constrained DynamicsAn algorithm for the fast solution of symmetric linear complementarity problemsAn algorithm for the fast so
2024-07-15 20:12:50
505
1
原创 【Unity学习笔记】第二十 · 物理引擎脉络梳理(数值积分、碰撞检测、约束解决)
至此,本文用不小的篇幅系统梳理了整个物理引擎脉络。乍一看好像也没什么,不就是数值积分、碰撞检测和约束求解三部分吗?但就像史铁生说的 「**万事万物,你若预测它的未来,你就会说它有无数种可能,可你若回过头去看它的以往,你就会知道其实只有一条命定的路。**」这一路走过,需要学习和验证的东西太多太多。但好在这条路最终还是走下来了,也感谢物理引擎这段时间的陪伴。
2024-07-15 20:12:01
2678
1
原创 牛顿力学和拉格朗日力学求解atwood machine问题对比
牛顿力学和拉格朗日力学求解atwood machine问题对比一个半径为R、转动惯量为I的圆盘。绳子与圆盘无滑动,质量m2的物体在重力g作用下下坠,带动质量m1的物体上升。求m1和m2的加速度a。
2024-07-12 03:06:43
1042
原创 【Unity学习笔记】第十九 · 物理引擎约束求解解惑(LCP,最优,拉格朗日乘数法,SI,PGS,基于冲量法)
在学习物理引擎过程中,有几大问题一直困扰着我:1. 约束求解到底是LCP还是带约束最优问题?2. 约束求解过程中拉格朗日乘数法和带约束优化中的拉格朗日乘数法是一个东西吗?3. 基于力的约束求解、基于冲量、基于位置的约束求解区别?4. SI和PGS的区别?GS与PGS区别?
2024-07-12 03:03:51
1448
原创 【Unity学习笔记】这段时间学习的几点小心得(scene结构、文件结构、学习方法)
这段时间学习的几点小心得(scene结构、文件结构、学习方法)
2024-05-16 17:16:09
624
2
原创 【Unity学习笔记】第十七 Quaternion 中 LookRotation、Lerp、Slerp、RotateTowards等方法辨析与验证
本文主要辨析Quaternion中Lerp、Slerp、RotateTowards等方法,并进行代码验证。至此,对Quaternion核心方法的理解已比较清晰,但其中的数学原理比如四元数、和欧拉角的关系、万向锁、逆和共轭等问题还是有待进一步学习。
2024-05-15 23:21:43
2635
原创 【Unity学习笔记】第十六 World space、Parent space和Self space及Quaternion左乘右乘辨析
Unity中的坐标系比较多,特别是local语义歧义问题,会对后面的学习造成困扰。为此本文详细辨析了World space、Parent space和Self space含义,并用三个坐标系下的移动进行示例。同时辨析了Quaternion左乘右乘的区别,展示了其与坐标空间的关联。本文论述有限,但提供了详细代码,读者需结合代码进行实验方能深刻体会。注意,文章内容不一定对,需自行辨别。
2024-05-15 14:57:04
1269
原创 【Unity学习笔记】第十五 Transform 查缺补漏 (TransformDirection / InverseTransformDirection解释,三种坐标系下的Translate())
本文对Transform类进行较详细的分析,分别从Transform层级关系相关属性和方法、 坐标系相关属性和方法以及`Translate`方法等结构进行清晰地梳理,特别是对`TransformDirection / InverseTransformDirection`这个坐标系变换方法进行解释,同时提到了Translate()方法可以在三种不同参考系中进行移动。通过上面的查缺补漏,我想未来再使用Transform将会变得更得心应手。
2024-05-06 01:09:20
2436
原创 【Unity学习笔记】第十四 Prefab 概念解惑
本文初步探究了关于prefab的一些疑惑,但并没有彻底弄清,不过至少比原先清晰了很多,后面可能还要研究AssetBundle和资源加载、序列化之类的才能更清楚些,等未来实战再遇到时再来研究吧。
2024-04-28 14:21:59
5181
3
原创 【Unity学习笔记】第十三 · tag与layer(运行时创建tag和layer)
本文主要搜集并验证运行时添加tag和layer的方法。(本来不准备写博客的,但又寻思都搜集了些,胡乱贴上就是了,也算一篇文章了,也正好许久没了。但一写上就需要负责,很多地方都需要仔细验证,不过也算值得,本来tag我试过可以后就以为layer也一样,没想到这么点小改动我都会忙碌许久,就像这小小的tag和layer,手册上一带而过,不动手试试还真不知道这么多问题。
2024-04-20 01:02:02
2050
1
转载 Unity中 root motion 与 Bake into pose本质的个人理解
如果对骨骼模型的父对象使用`apply root motion`,系统会将`未bake into pose`的`root transform`分量作用到父对象的`transform`中,然后**骨骼节点将跟随父对象移动**。所以这也是为什么在apply root motion和未bake into pose情况下,模型能连续运动的原因,其实这可以看作“被父节点的移动带动的原地动画”。
2024-01-25 11:39:23
761
原创 【Unity学习笔记】第十一 · 动画基础(Animation、状态机、root motion、bake into pose、blendTree、大量案例)
本章主要学习Unity动画基础知识,主要包含:动画片段、Animation编辑器、动画状态机、混合树 blendTree、Root Motion等内容,IK和Playable将在后续博客总结。本文主要是一些动画基础知识介绍和editor编辑器操作示范,包含较多的案例。值得一提的是对Root Motion和Bake into Pose进行了深入的剖析,感兴趣的可以直接看结论。
2024-01-24 14:42:32
5259
4
转载 New Input System PlayerInput三种Behavior辨析
对于Unity New Input System的PlayerInput三种Behavior,总的来说:sendMessage 最方便,但性能最差、灵活性不佳;UnityEvent最直观,性能一般;C#Event 最灵活、性能最好,但操作稍麻烦。根据需要选择适合的Behavior。
2024-01-22 13:39:40
366
1
转载 Unity Binding冲突解决探究
而如果当前control存在冲突且非"最激活"的,就会略过defaultInteraction处理,所以对于上面 第3点,依次按下jkl后,如果先释放kl是不会触发action的,只有先释放j才会触发action,但之后哪个control能拿到"最激活"的control,似乎和action上binding的顺序有关。这两种不属于触发冲突,是由用户来控制的。总之,不考虑上面 第6点 这种特列,当存在冲突,优先高复杂度binding触发action,其所包含的冲突control就不同时触发其他action了。
2024-01-22 12:58:41
403
原创 【Unity学习笔记】New Input System 部分源码和测试用例补充
【代码】【Unity学习笔记】New Input System 部分源码和测试用例补充。
2024-01-21 19:25:11
1319
原创 【Unity学习笔记】Unity TestRunner使用
点击Assembly文件的Inspector窗口,添加 nunit.framework.dll、UnityEngine.TestRunner、 UnityEditor.TestRunner, 测试Input System时额外添加 Unity.InputSystem 和Unity.InputSystem.TestFramework。添加测试文件夹,在此文件夹下添加assembly definition (菜单栏中: Create > Assembly Definition)
2024-01-21 19:21:53
1359
原创 【Unity学习笔记·第十二】Unity New Input System 及其系统结构和源码浅析
Unity New Input System主要分为三大块:1. **设备与输入**:介绍layout、Device、Control三个重要的概念,包含设备生命周期和updateType等知识讲解。2. **Action与绑定**:包含Action、Binding、Interaction、processor等内容,这是开发者使用newInputSystem时最需要了解的部分。本文对其中不同ActionType以及Interaction触发ActionPhase的区别、不同Binding冲突解决...
2024-01-21 19:17:31
6762
原创 C#事件的本质
event字段本质就是对委托进行私有访问限制,事件的本质就是委托,只不过系统会对用event字段修饰的委托进行了特殊处理,比如自动生成一个私有的委托变量,添加两个事件访问器,同时禁止外部类对事件的Invoke等方法调用。
2023-12-06 18:15:57
387
【Unity实战笔记】第二一 · 基于状态模式的角色控制-以UnityChan为例
2024-10-24
【Ringleader unity学习分享】18 sun-earth-moon
2024-10-21
JAVA核心知识点整理.7z
2020-06-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人