【Unity博客节选】Playable Graph Monitor 安装使用

注:软件版本Unity 6.0 + Timeline 1.8.7
作者:CSDN @ RingleaderWang

原文:《Unity第25期------Timeline结构及其源码浅析》
文章首发Github👍 :《Timeline结构及其源码浅析》
Bilibili 视频版👍👍:《Timeline结构及其源码解析》https://www.bilibili.com/video/BV1bHjYzNE35

可以使用Playable Graph Monitor 查看 Timeline生成的graph。

安装步骤:

  1. open Edit/Project Settings/Package Manager

  2. add a new Scoped Registry (or edit the existing OpenUPM entry)

    • Name: package.openupm.com
    • URL: https://package.openupm.com
    • Scope(s): com.greenbamboogames.playablegraphmonitor
  3. click Save or Apply

  4. open Window/Package Manager

  5. click +

  6. select Add package by name... or Add package from git URL...

  7. paste com.greenbamboogames.playablegraphmonitor into name

  8. paste 2.6.3 into version

  9. click Add

测试案例:

csharp 复制代码
public AnimationClip clip;  
public AnimationClip clip2;  
private PlayableGraph graph;

void DestoryGraph(PlayableGraph graph)  
{  
    if (graph.IsValid())  
    {        
	    graph.Destroy();  
    }
}
  private void CreateMixerGraph()
    {
        DestoryGraph(graph);
        // 1. 创建 PlayableGraph
        graph = PlayableGraph.Create("MixerPlayableGraph");
        // 2. 获取 Animator 并创建 AnimationPlayableOutput
        var animator = GetComponent<Animator>();
        var animationOutput = AnimationPlayableOutput.Create(graph, "Animation", animator);
        // 3. 创建 AnimationClipPlayable
        var clipPlayable = AnimationClipPlayable.Create(graph, clip);
        var clipPlayable2 = AnimationClipPlayable.Create(graph, clip2);
        // 4. 创建一个 Mixer,管理多个动画输入
        AnimationMixerPlayable mixer = AnimationMixerPlayable.Create(graph, 2);
        mixer.ConnectInput(0, clipPlayable, 0,1);
        mixer.ConnectInput(1, clipPlayable2, 0,1);
        // 5. 设置 mixer 作为输出
        animationOutput.SetSourcePlayable(mixer);
        // 6. 播放图谱
        graph.Play();
    }
public void OnDestroy()  
{  
    DestoryGraph(graph); 
}

逻辑很简单,就4步:

  • 创建graph
  • 创建playable、mixerPlayable 并 connect
  • 创建playableOutput 并 setSourceOutput
  • 运行graph

对应的graph如下:

如果你使用官方的PlayableGraph Visualizer 的话,你会发现和 Playable Graph Monitor所展示的不一样。

比如这个例子:

PlayableGraph Visualizer展示:

Playable Graph Monitor展示:

你可以发现区别很大,Visualizer从PlayableOutput往Playable构图,且两个PlayableOutput独立构图;而Monitor是从叶子Playable节点往PlayableOutput构图,两个PlayableOutput连在一个output端口上。

到底哪个对呢?

其实都对。Visualizer是从graph play角度构图的,Monitor是从graph create角度构图的。

执行遍历节点获取数据时,其发起端其实是PlayableOutput,所以Visualizer把各个PlayableOutput独立开来构图,但这种展示方式对认识graph的结构不如Monitor清晰,而且官方Visualizer不能缩放,插件还有些bug会导致系统闪退,所以直接用Monitor就行。

不过Monitor的展示还是有些问题,两个PlayableOutput连在同一个output port了,这应该是Unity Timeline自身的问题,你理解成第二个PlayableOutput连在第二个port就行,以此类推。(不影响运行)

相关推荐
平行云3 小时前
建筑BIM/3D可视化轻量级实时评审与分享方案
unity·ue5·3dsmax·实时云渲染·云桌面·云游戏·建筑bim
2501_9151063221 小时前
Windows 上开发 Unity iOS,使用 KXBuild 进行真机调试、性能采样与打包 ipa
windows·vscode·unity·ios·个人开发·swift·敏捷流程
FFFFujige21 小时前
【Unity】一个的Dots用Ruhanka踩坑记录
unity·游戏引擎
凯基迪科技2 天前
Unity游戏加密锁逆向方案、选型与攻防分析
游戏·unity·游戏引擎
阿松爱学习2 天前
【Unity开发】局部区域截图功能实现
unity·c#
淡海水2 天前
08-02-优化-LINQ与函数式编程的GC代价
unity·c#·.netcore·linq·gc
警醒与鞭策3 天前
Codex桌面版与Claude桌面版使用设置
android·unity·ai·性能优化
xcLeigh3 天前
Unity基础:Destroy与DestroyImmediate——正确销毁游戏物体的方式
游戏·unity·游戏引擎·教程
lllhhh_远方3 天前
unity中URP场景阴影锯齿严重解决方案
unity·游戏引擎
淡海水3 天前
07-06-源码-.NET Core GC的极致优化技术
unity·架构·c#·.netcore·gc·1024程序员节