当前位置: 首页 > 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.zskr.cn/news/1796.html

相关文章:

  • 根据端口找到进程id
  • 双因子验证网站(aspsms.com/en/registration/)无法注册——Capcha Error
  • mysql导入数据库,从基础命令到高效技巧
  • 基于“北斗+卫星互联网”的低空飞行服务保障基础设施
  • CVE-2025-30208 Vite开发服务器任意文件读取漏洞
  • Claude Code 从入门到精通:最全配置指南和工具推荐
  • 利用python开发的一款日志自动查找复制小工具
  • stress-ng压测CPU内存
  • 答案
  • datadome OfflineAudioContext
  • sentinel-1.8.0 安装
  • 数据结构与算法-27.树-并查集
  • wpf XAML设计器在加载用户控件的时候,提示null引用等直接执行了用户控件里构造函数代码的问题
  • Linux中怎么调整系统inode数量?
  • 【项目实战】基于WS63的鸿蒙星闪红外遥控车(循迹、超声波避障、远程控制、星闪/红外遥控)有教程代码
  • macbook pro怎么安装windows系统
  • XSS与CSRF的联系与区别
  • 异或
  • macbook pro如何安装windows系统
  • 【ACM出版】第四届公共管理、数字经济与互联网技术国际学术会议(ICPDI 2025)
  • 如何在 Linux 中关闭 Swap(虚拟内存)
  • 基于STM32F411的AM2320温湿度采集程序
  • 博弈论杂谈
  • 基于MATLAB的图像配准与拼接实现
  • ubuntu 修改 时间
  • CF2022E 题解 | 数学、并查集
  • 领悟2025.9.10
  • 公众号文章如何添加附件?微信公众号支持附件下载Word、Excel、PDF、PPT等
  • Java11-快速启动指南-全-
  • openssl编程之sm3哈希代码示例