Unity Timeline学习笔记(3) - SignalTrack信号轨道和自定义带参数的Marker信号和轨道

这篇具有很好参考价值的文章主要介绍了Unity Timeline学习笔记(3) - SignalTrack信号轨道和自定义带参数的Marker信号和轨道。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

信号轨道,顾名思义就是运行到某处发送一个信号。

普通用法

普通用法就是没有任何封装的,个人感觉特别难用,但是有必要理解一下工作原理。

添加信号

我们添加一个信号资源
unity timeline signal,Unity,unity,timeline,marker,signal
生成后可以看到资源文件,这个是可以拖到SignalTrack上的。
unity timeline signal,Unity,unity,timeline,marker,signal

我们在Timeline上添加两个信号轨道,并拖动信号到轨道上。
unity timeline signal,Unity,unity,timeline,marker,signal
然后我们看到两个信号接收器还是空的,我们可以添加信号接收。

自定义一个接收信号的脚本

我们创建一个普通的接收脚本。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SignalGetTest : MonoBehaviour
{
    public void GetSignal(int sig)
    {
        Debug.Log("接收到信号"+sig);
    }
}

然后我们建立两个接收器来接收这两个信号。
unity timeline signal,Unity,unity,timeline,marker,signal
unity timeline signal,Unity,unity,timeline,marker,signal
这里就是比较麻烦的地方,因为int参数是在接收脚本上的,所以需要两个接收。

把接收器拖入轨道引用里

把1拖入1,2拖入2。
unity timeline signal,Unity,unity,timeline,marker,signal
我们执行看结果.
unity timeline signal,Unity,unity,timeline,marker,signal
这就是最基础的用法了,这里因为信号不带参数所以不方便使用,这里我添加了两个接收器,或者可以创建不同的信号来实现,那么如何使用一个信号发送带参数不就很方便了,下面我们来看如何制作。

好用的办法

我们需要3个脚本:
一个自定义接收器,一个带参数的Mark信号,一个自定义轨道。
先贴上脚本:

Mark信号

我的信号需要继承Marker,类似于信号。

using UnityEngine.Playables;
using UnityEngine.Timeline;
using UnityEngine;
using System.ComponentModel;

[DisplayName("我的信号")]
public class MySignal : Marker, INotification, INotificationOptionProvider
{
    public string sigName;
    public int sigParm1;
    public PropertyName id { get; }

    NotificationFlags INotificationOptionProvider.flags => NotificationFlags.TriggerOnce | NotificationFlags.TriggerInEditMode;

   
}

我们可以看到下面就多了Add 我的信号
unity timeline signal,Unity,unity,timeline,marker,signal

接收器

这里负责处理不同的信号类型,我这里写了如果是MySignal就显示出来,如果你有多个信号类型可以自行扩充。这个脚本挂在一个对象上就可以了。
unity timeline signal,Unity,unity,timeline,marker,signal
脚本如下:

using UnityEngine.Playables;
using UnityEngine;

class MySignalReceiver : MonoBehaviour,INotificationReceiver
{
    public void OnNotify(Playable origin, INotification notification, object context)
    {
        if (notification is MySignal)
        {
            MySignal signal = (MySignal)notification;
            Debug.Log(signal.sigName + "," + signal.sigParm1);
        }
        
    }
}

轨道

然后是我们的轨道,我们看到这个轨道Binding类型就是我们的接收器。


using System.ComponentModel;

using UnityEngine.Timeline;

[TrackBindingType(typeof(MySignalReceiver))]
[DisplayName("我的信号轨道")]
public class MySignalTrack : MarkerTrack
{
    
}

在Timeline上点击鼠标右键,我们就可以添加轨道了。
unity timeline signal,Unity,unity,timeline,marker,signal
unity timeline signal,Unity,unity,timeline,marker,signal
然后我们需要把脚本对象拖动上去
unity timeline signal,Unity,unity,timeline,marker,signal
然后我们添加两个信号
unity timeline signal,Unity,unity,timeline,marker,signal
并且可以输入信号的参数。

我们运行看效果
unity timeline signal,Unity,unity,timeline,marker,signal
这样就实现了自定义信号,也不麻烦还很好用。文章来源地址https://www.toymoban.com/news/detail-849473.html

到了这里,关于Unity Timeline学习笔记(3) - SignalTrack信号轨道和自定义带参数的Marker信号和轨道的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity Timeline及其相关插件

    Timeline给不同类型的对象建立不同的轨道,在每个轨道的时间线上我们可以组织动画播放、音频播放,游戏对象的显隐等操作,也可以自定义轨道完成一些个性化操作 使用Timeline需要Playable Director组件,它控制Timeline的播放,暂停,循环等功能,Timeline可以看作是剧本,Playabl

    2024年02月08日
    浏览(86)
  • Unity TimeLine跨场景动态绑定对象

    在unity TimeLine使用时,想要控制某个物体上的对象,直接将场景中该物体拖拽到对应的PlayableDirector的Track上即可。但如果希望控制的物体是动态生成的,或TimeLine作为Prefab的一部分出现在其他场景中,又希望控制场景中的物体等等,在不能使用拖拽指定或资源选择指定资源的情

    2024年02月10日
    浏览(28)
  • Unity TimeLine循环播放某个时间段

    1、设置Playable Director的Update Method为GameTime模式 2、API : using UnityEngine.Playables; 我们需要用到PlayableDirector的time属性 3、设置开始和结束时间段(使用的帧率)我在0-158帧循环和158到290帧之间循环 4、代码 代码笔记

    2024年02月11日
    浏览(40)
  • 解决Unity打包后Timeline里部分特效没显示的bug

    比较诡异的问题,美术同学给过来的特效资源,在Edtior里是正常播放的,但打包后特效里应该落下来的光柱却消失了。 考虑到打包后的环境和Editor环境的区别 AssetBundle 通过在Editor里加载AssetBundle来播放,发现也是正常的,应该不是资源问题。 ParticleSystem的Culling Mode 粒子系统

    2023年04月08日
    浏览(33)
  • Unity Timeline在编辑器下正常,真机(模拟器、手机)不正常播放问题

    出现这个问题很大可能是因为设置了 Managed Stripping Level = Low 只需要改成 Managed Stripping Level = Medium就可以正常播 或者改Assets/link.xml没有就新建 如果还是不能播放,可以考虑下是不是资源打包出问题了。 上面的代码裁剪掉的明显特征是,真机运行log会出现: The referenced script (U

    2024年03月13日
    浏览(83)
  • 「Verilog学习笔记」信号发生器

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网         方波的实现,较为简单,只需要设置一个计数器,使输出保持10个时钟为0,跳变为20,再保持10个时钟。依次循环。可以按照如下的过程实现:cnt每个时钟加一,当cnt=

    2024年02月05日
    浏览(33)
  • Unity对象池和自写对象池

    目录 一. 什么是对象池 二、创建对象池 1、Stack ①Stack类 1构造函数 2属性 3方法 ②Stack对象池 2、Queue ①Queue类 1构造函数 2属性 3方法 ②Queue对象池 3.Unity官方对象池 ①Object Pool类 1构造函数 2属性 3方法 ②Object Pool对象池 一. 什么是对象池 顾名思义就是一定数量的已经创建好的

    2024年01月21日
    浏览(25)
  • QT学习笔记4--自定义信号的槽

    逻辑:下课后,老师饿了,学生请吃饭。 使用connect函数连接自定义的信号和槽函数。 声明   void classover();  

    2024年02月11日
    浏览(40)
  • TinyWebServer学习笔记-互斥锁、信号量、条件变量

    网站不可能是单线程的,否则网站的性能和响应都会收到严重的影响。因此,这个项目一定是运行在多线程条件下的。而在多线程条件下,对共享资源的互斥访问就极其重要。 首先,我们要明确资源的使用一般有三个步骤: 1、获取资源 2、使用资源 3、释放资源 然而,大多

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包