zoukankan      html  css  js  c++  java
  • [Unity基础]Timeline的简单使用

    参考链接:

    https://www.jianshu.com/p/56b56d80fbc8

    https://www.jianshu.com/p/20801229717a

    Timeline需要unity2017以上

    1.点击菜单栏Window/Sequencing/Timeline打开窗口

    创建一个空物体,点击“Create”,这时会创建一个.playable的资源,同时会为该物体挂上“PlayableDirector”和“Animator”组件,其中PlayableDirector是用来播放.playable文件的

    2. 将1个模型预制体拖到上面的Timeline根物体下,然后将模型预制体中带有“Animator”组件的子物体拖到Track区域上,然后选择Animation轨道

     

    3.将该模型的动画拖上去,运行游戏,这时Timeline的动画会覆盖模型动画控制器的动画,即播放的是Timeline的动画

    4.自定义扩展

    PlayableBehaviour

     1 using UnityEngine;
     2 using UnityEngine.Playables;
     3 
     4 public class LightPlayableBehaviour : PlayableBehaviour
     5 {
     6     public Light light = null;
     7     public Color color = Color.white;
     8     public float intensity = 1f;
     9 
    10     public override void OnGraphStart(Playable playable)
    11     {
    12         base.OnGraphStart(playable);
    13         Debug.Log("OnGraphStart");
    14     }
    15 
    16     public override void OnGraphStop(Playable playable)
    17     {
    18         base.OnGraphStop(playable);
    19         Debug.Log("OnGraphStop");
    20     }
    21 
    22     public override void OnBehaviourPlay(Playable playable, FrameData info)
    23     {
    24         base.OnBehaviourPlay(playable, info);
    25         Debug.Log("OnBehaviourPlay");
    26         light.color = color;
    27         light.intensity = intensity;
    28     }
    29 
    30     public override void OnBehaviourPause(Playable playable, FrameData info)
    31     {
    32         base.OnBehaviourPause(playable, info);
    33         Debug.Log("OnBehaviourPause");
    34         light.color = Color.white;
    35         light.intensity = 1;
    36     }
    37 
    38     public override void ProcessFrame(Playable playable, FrameData info, object playerData)
    39     {
    40         base.ProcessFrame(playable, info, playerData);
    41         Debug.Log("ProcessFrame");
    42     }
    43 }

    PlayableAsset

     1 using UnityEngine;
     2 using UnityEngine.Playables;
     3 
     4 public class LightPlayableAsset : PlayableAsset
     5 {
     6     public ExposedReference<Light> light;
     7     public Color color = Color.white;
     8     public float intensity = 1.0f;
     9 
    10     public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
    11     {
    12         var scriptPlayable = ScriptPlayable<LightPlayableBehaviour>.Create(graph);
    13         var behaviour = scriptPlayable.GetBehaviour();
    14         behaviour.light = light.Resolve(graph.GetResolver());
    15         behaviour.color = color;
    16         behaviour.intensity = intensity;
    17         return scriptPlayable;
    18     }
    19 }

    如下,这样就能创建自定义的PlayableAsset

    选中该PlayableAsset,PlayableAsset脚本的作用是将面板的值赋给PlayableBehaviour;而PlayableBehaviour则是对这些值进行操作

     

    执行顺序:

    OnGraphStart->OnBehaviourPause->OnBehaviourPlay->ProcessFrame->OnBehaviourPause->OnGraphStop

  • 相关阅读:
    PHP中Foreach在引用时的陷阱 j神
    Yii中Session和cookie的用法 j神
    如何解决web大流量、高并发的问题 j神
    PHP无限级分类的递归算法 j神
    关于breadcrumbs j神
    MySQL索引分析和优化 j神
    Yii笔记 j神
    YII中的URL Management j神
    forward与redirect的区别 j神
    网络编程学习笔记
  • 原文地址:https://www.cnblogs.com/lyh916/p/15260614.html
Copyright © 2011-2022 走看看