2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.9 KiB
C#

using UnityEditor;
using UnityEditor.Timeline;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
[ExecuteInEditMode]
public class TimelineTool : MonoBehaviour
{
private PlayableDirector PlayableDirector;
2 years ago
public GameObject self;
public GameObject target;
public Animator self_animator;
public Animator target_animator;
private void OnEnable()
{
PlayableDirector = GetComponent<PlayableDirector>();
Selection.selectionChanged += OnSelectionChanged;
}
private void OnDisable()
{
Selection.selectionChanged -= OnSelectionChanged;
}
private void OnSelectionChanged()
{
var selectedObject = UnityEditor.Selection.activeObject;
if (selectedObject == null) return;
if (selectedObject.GetType() != typeof(TimelineAsset)) return;
// 打印选定对象的名称
var timeline = (TimelineAsset)selectedObject;
PlayableDirector.playableAsset = timeline;
foreach (var track in timeline.GetOutputTracks())
{
2 years ago
if (track is AttackTrack)
{
PlayableDirector.SetGenericBinding(track, self);
}
if (track is AnimationTrack)
{
2 years ago
PlayableDirector.SetGenericBinding(track, self_animator);
}
2 years ago
if (track is ThrowPositionTrack)
{
PlayableDirector.SetGenericBinding(track, target);
}
if (track is ThrowAnimationTrack)
{
PlayableDirector.SetGenericBinding(track, target_animator);
}
if (track is ThrowTurnTrack)
{
2 years ago
PlayableDirector.SetGenericBinding(track, target);
}
}
EditorApplication.delayCall += () => { Selection.activeGameObject = gameObject; };
TimelineEditor.GetOrCreateWindow().ShowTab();
}
}