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

  • 相关阅读:
    如何在Blog中使用feedburner管理RSS订阅
    网络基本功(八):细说TCP滑动窗口
    JAVA三大框架的各自作用
    NHibernate与EF(Entity Framework)的区别
    程序模拟浏览器请求及会话保持-python实现
    Netbeans7.4下搭建struts2.3.16
    解决Sqlite UTF-8中文数据格式在DOS窗口下中文乱码
    Android使用xml中定义的动画效果
    Android 之Activity切换动画效果
    设置ActioinBar 的背景色以及Title的字体颜色
  • 原文地址:https://www.cnblogs.com/lyh916/p/15260614.html
Copyright © 2011-2022 走看看