未通过脚本引用 Unity 时间轴组件
Unity Timeline Component Not being Referenced through Scripting
我按照教程在 Unity Timeline 中创建了一个文本自定义轨道。我想通过脚本将轨道的键绑定到带有 TextMeshProUGUI 的字幕游戏对象。基本上,我使用以下方法:
playableDirector.SetGenericBinding(track, subtitle);
这是时间轴上的结果:
这是时间轴中的结果,如果我只拖动同一个对象:
组件没有出现在第一张图片中,为什么?
这是我在手动引用后做的另一个测试:
var subtitle = playableDirector.GetGenericBinding(track);
playableDirector.ClearGenericBinding(track);
playableDirector.SetGenericBinding(track, subtitle);
Debug.Log(subtitle.GetType());
我没有将 TextMeshProUGUI 组件直接输入到方法中,因为我在脚本编辑器中遇到错误。但是在阅读之后,组件被认为是对象,没有理由不工作,所以我 运行 脚本并且即使有一条红线也能工作。我不知道为什么会这样,但这是解决方案:
var subtitle = Subtitle.subtitle; // I referenced the component and made it static
playableDirector = GetComponent<PlayableDirector>();
timeline = playableDirector.playableAsset as TimelineAsset;
good = timeline.GetRootTrack(1);
bad = timeline.GetRootTrack(2);
var goodTracks = good.GetChildTracks() as List<TrackAsset>;
var badTracks = bad.GetChildTracks() as List<TrackAsset>;
playableDirector.SetGenericBinding(goodTracks[0], subtitle);
playableDirector.SetGenericBinding(badTracks[0], subtitle);
我按照教程在 Unity Timeline 中创建了一个文本自定义轨道。我想通过脚本将轨道的键绑定到带有 TextMeshProUGUI 的字幕游戏对象。基本上,我使用以下方法:
playableDirector.SetGenericBinding(track, subtitle);
这是时间轴上的结果:
这是时间轴中的结果,如果我只拖动同一个对象:
组件没有出现在第一张图片中,为什么?
这是我在手动引用后做的另一个测试:
var subtitle = playableDirector.GetGenericBinding(track);
playableDirector.ClearGenericBinding(track);
playableDirector.SetGenericBinding(track, subtitle);
Debug.Log(subtitle.GetType());
我没有将 TextMeshProUGUI 组件直接输入到方法中,因为我在脚本编辑器中遇到错误。但是在阅读之后,组件被认为是对象,没有理由不工作,所以我 运行 脚本并且即使有一条红线也能工作。我不知道为什么会这样,但这是解决方案:
var subtitle = Subtitle.subtitle; // I referenced the component and made it static
playableDirector = GetComponent<PlayableDirector>();
timeline = playableDirector.playableAsset as TimelineAsset;
good = timeline.GetRootTrack(1);
bad = timeline.GetRootTrack(2);
var goodTracks = good.GetChildTracks() as List<TrackAsset>;
var badTracks = bad.GetChildTracks() as List<TrackAsset>;
playableDirector.SetGenericBinding(goodTracks[0], subtitle);
playableDirector.SetGenericBinding(badTracks[0], subtitle);