当前位置: 首页 > news >正文

unity TimeLine SignalTrack

先新建一个TimeLine

 

image

 添加Track

image

 

 

using SLSC.LBE;
using System;
using UnityEngine;
using UnityEngine.Playables;public class TestCubeReceiver :MonoBehaviour,INotificationReceiver
{public void OnNotify(Playable origin, INotification notification, object context){Debug.LogError("Test Cube Success");}
}
using System;using System.ComponentModel;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;[DisplayName("Cube测试")]
[Serializable]
public class TestCubeSignal : Marker, INotification, INotificationOptionProvider
{public PropertyName id { get; }NotificationFlags INotificationOptionProvider.flags => NotificationFlags.TriggerOnce | NotificationFlags.TriggerInEditMode;}
using System.ComponentModel;
using UnityEngine.Timeline;
using UnityEngine;
[TrackBindingType(typeof(TestCubeReceiver))]
[DisplayName("测试Cube")]
public class TestCubeSignalTrack :MarkerTrack
{}

 

 

相机震动例子

using System.ComponentModel;
using UnityEngine.Timeline;namespace SLSC.LBE
{[TrackBindingType(typeof(ShakeCameraReceiver))][DisplayName("相机震动信号轨道")]public class ShakeCameraSignalTrack : MarkerTrack{}
}using UnityEngine.Playables;
using UnityEngine.Timeline;
using UnityEngine;
using System.ComponentModel;
using System;namespace SLSC.LBE
{[DisplayName("相机震动")][Serializable]public class ShakeCameraSignal : Marker, INotification, INotificationOptionProvider{public float duration;public Vector3 offset;public int vibrato;public PropertyName id { get; }NotificationFlags INotificationOptionProvider.flags => NotificationFlags.TriggerOnce | NotificationFlags.TriggerInEditMode;}}using UnityEngine;
using System;
using UnityEngine.Playables;namespace SLSC.LBE
{public class ShakeCameraReceiver : MonoBehaviour, INotificationReceiver{public void OnNotify(Playable origin, INotification notification, object context){if (notification is ShakeCameraSignal){ShakeCameraSignal signal = (ShakeCameraSignal)notification;SLSCManager.Instance.ShakeCamera(signal.duration,signal.offset,signal.vibrato);}}}
}{public void ShakeCamera(float duration, Vector3 offset, int vibrato){//震动CameraOffset物体,即mainCamera的父物体
      MainCameraTrans.parent.DOShakePosition(duration, offset, vibrato);}}

 

http://www.hskmm.com/?act=detail&tid=970

相关文章:

  • macOS Tahoe 26 RC (25A353) Boot ISO 原版可引导镜像下载
  • 企业如何选型低代码平台?4款产品测评
  • 对于退款/拒付这类逆向订单操作需要创建新的单号么
  • torch版本应该跟cuda、cudacnn的版本一致
  • 小白如何零成本搭建一个属于自己的私人知识库
  • 安装mysql数据库,从下载到配置的详细教程
  • 根据端口找到进程id
  • 双因子验证网站(aspsms.com/en/registration/)无法注册——Capcha Error
  • MathType7下载安装2025最新下载+安装教程(附安装包)
  • mysql导入数据库,从基础命令到高效技巧
  • 基于“北斗+卫星互联网”的低空飞行服务保障基础设施
  • CVE-2025-30208 Vite开发服务器任意文件读取漏洞
  • Claude Code 从入门到精通:最全配置指南和工具推荐
  • 利用python开发的一款日志自动查找复制小工具
  • 基于 RBF 神经网络的 PID 参数自适应整定—风力机变桨距控制
  • 金蝶云星空学习记录1
  • (简记)虚树
  • stress-ng压测CPU内存
  • 答案
  • datadome OfflineAudioContext
  • AI测试平台自动遍历:低代码也能玩转全链路测试
  • 2025-09-10
  • Codeforces Round 1047 (Div. 3)
  • sentinel-1.8.0 安装
  • 数据结构与算法-27.树-并查集
  • wpf XAML设计器在加载用户控件的时候,提示null引用等直接执行了用户控件里构造函数代码的问题
  • 设计模式-策略
  • Linux中怎么调整系统inode数量?
  • DARPA AI网络挑战赛技术框架全解析:自动化漏洞挖掘与修复系统构建
  • 数据库基本查询语句