调度程序提供将操作排队以在特定时间或持续时间运行的功能。
您可以使用调度程序创建动画、更新 UI 或创建需要延迟或重复操作的任务。
要调度操作,请使用 IVisualElementScheduler.Execute 方法。调度程序将在下一帧运行该操作。
一个 VisualElement 与调度程序关联,您可以通过 VisualElement.schedule 属性访问它。它返回一个 IVisualElementScheduledItem 接口,该接口提供调度操作的方法。
例如,您可以使用 IVisualElementScheduledItem.StartingIn 方法延迟操作的运行。您还可以使用 IVisualElementScheduledItem.Until 方法指定一个条件来取消调度操作。
要以指定的间隔重复操作,请使用 IVisualElementScheduledItem.Every 方法。要移除调度程序,请使用 IVisualElementScheduledItem.Pause 方法。
调度程序仅在 VisualElement 附加到面板时处于活动状态。从面板分离 VisualElement 会暂停调度程序,重新附加它会恢复调度程序。
其他资源:VisualElement.schedule、VisualElement.panel、IVisualElementScheduledItem
// This example uses the scheduler to animate the title logo by changing its background image // to the next frame every 200 milliseconds. int m_CurrentTitleLogoFrame = 0; public List<Texture2D> m_TitleLogoFrames = new List<Texture2D>(); // Animate title logo. var titleLogo = root.Q("menu-title-image"); titleLogo?.schedule.Execute(() => { if (m_TitleLogoFrames.Count == 0) return;
m_CurrentTitleLogoFrame = (m_CurrentTitleLogoFrame + 1) % m_TitleLogoFrames.Count; var frame = m_TitleLogoFrames[m_CurrentTitleLogoFrame]; titleLogo.style.backgroundImage = frame; }).Every(200);
// This example uses the scheduler to animate the scaling of a VisualElement. IVisualElementScheduledItem m_AnimationScheduler = null; public void DoScale() { // Scale the VisualElement. } m_AnimationScheduler = this.schedule.Execute(DoScale).Every(1).StartingIn(0); // Stop the animation m_AnimationScheduler.Pause();
Execute | 调度此操作以便稍后执行。 |