Unity 6.3
0 онлайн 54 гостей 3 в системе
Вход

FrameData.deltaTime

Declaration

public float deltaTime;

Описание

Интервал между этим кадром и предыдущим кадром. Интервал не масштабируется и выражается в секундах.

Чтобы масштабировать интервал по времени, умножьте интервал на FrameData.effectiveSpeed.

//Attach this script to a GameObject that has an Animator and set the Animator field.
using UnityEngine;
using UnityEngine.Animations;
using UnityEngine.Playables;

public class MyMonoBehaviour : MonoBehaviour { [SerializeField] private Animator m_Animator;

private PlayableGraph m_Graph; private void Awake() { m_Graph = PlayableGraph.Create(); m_Graph.SetTimeUpdateMode(DirectorUpdateMode.GameTime);

var scriptPlayable = ScriptPlayable<MyPlayableBehaviour>.Create(m_Graph);

// Sets game time's scale, as well as custom playable's speed. Time.timeScale = 10f; scriptPlayable.SetSpeed(0.5f);

var playableOutput = AnimationPlayableOutput.Create(m_Graph, "MyPlayableOutput", m_Animator); playableOutput.SetSourcePlayable(scriptPlayable, 0);

m_Graph.Play(); }

private void OnDestroy() { if (m_Graph.IsValid()) m_Graph.Destroy(); } }

public sealed class MyPlayableBehaviour : PlayableBehaviour { public override void PrepareFrame(Playable playable, FrameData info) { base.PrepareFrame(playable, info);

// info.deltaTime is not scaled, and so is 10 times smaller than Time.deltaTime // info.effectiveSpeed is equal to 5 (10 * 0.5). Time.timeScale is accounted for because we use DirectorUpdateMode.GameTime. // If we had used DirectorUpdateMode.UnscaledGameTime, info.effectiveSpeed would have been equal to 0.5. Debug.Log($"info.deltaTime = {info.deltaTime}, speed {info.effectiveSpeed} Time.deltaTime = {Time.deltaTime}"); } }