代码控制Timeline中轨道的屏蔽

基于上节中创建好Timeline以后,再进行本节的相关操作。

创建TimeLineMute脚本

脚本实现通过按键实时控制轨道的屏蔽操作。

注意:通过代码屏蔽轨道后,运行结束后轨道也是保持屏蔽的状态,所以需要每次开始时,先将所有轨道解开屏蔽的状态。

脚本代码如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;

public class TimeLineMute : MonoBehaviour
{
    //首先获取组件
    PlayableDirector m_playabledirector;
    TimelineAsset m_Timelineasset;
    void Start()
    {
        //找到场景中包含该组件的对象
        m_playabledirector = FindObjectOfType<PlayableDirector>();
        //找到该对象中TimeLineAsset组件
        m_Timelineasset = (TimelineAsset)m_playabledirector.playableAsset;
        //得到组件后,先给每个轨道解禁
        for(int i=1;i<=10;i++)
        {
            TrackAsset thetrack = m_Timelineasset.GetOutputTrack(i);
            thetrack.muted = false;//到这里为止,通过代码设置,场景中轨道确实被mute了,但是轨道中的内容还是一样执行,可能是没刷新。不知道为什么
           
        }
        double t0 = m_playabledirector.time;
        m_playabledirector.RebuildGraph();
        m_playabledirector.time = t0;
        m_playabledirector.Play();
    }

   //设置TimelineAsset中轨道的禁用
   public void MuteTrack(int inNum)
    {
        TrackAsset thetrack = m_Timelineasset.GetOutputTrack(inNum);
        thetrack.muted = true;//到这里为止,通过代码设置,场景中轨道确实被mute了,但是轨道中的内容还是一样执行,可能是没刷新。不知道为什么
        double t0 = m_playabledirector.time;
        m_playabledirector.RebuildGraph();
        m_playabledirector.time = t0;
        m_playabledirector.Play();
        //加了后续代码后就可以了正常隐藏了
        
    }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.M))
        {
            MuteTrack(5);
            //是按照每个轨道所占的轨道数进行操作的,暂时还没有发现Group一组屏蔽的代码操作
            MuteTrack(6);
            MuteTrack(7);
            MuteTrack(8);
            MuteTrack(9);
        }
           
    }
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值