【Unity】アニメーションや音をタイムスケールで一時停止する

投稿者: | 2023-04-07

アニメーションや音、エフェクトなどの演出をタイムスケールを0にすることで一時停止/再開してみました。

アニメーション

アニメーターコンポーネントのUpdate Modeが「Normal」のときは、タイムスケールに合わせてアニメーションが停止します。

「Unscaled Time」を選択すると、タイムスケールを0にしても、アニメーションが停止しなくなります。

タイムラインでアニメーションを再生する場合は、Playable Directorコンポーネントの「Update Method」を使って切り替えられます。

Game Time
Unscaled Game Time

音声

アニメーションと同様に、タイムラインでAudioSourceを再生できます。

Game Time
Unscaled Game Time

タイムラインを使わずに直接再生するときは、タイムスケールで停止できないようです。

AudioSource.PauseとAudioSource.UnPauseメソッドを使うと、一時停止/再開ができました。

using UnityEngine;
using UnityEngine.Audio;

public class TestScript4 : MonoBehaviour
{
    [SerializeField] AudioSource audioSource;
    [SerializeField] AudioClip audioClip;
    [SerializeField] AudioClip audioClip2;
    [SerializeField] AudioMixer mixer;
    [SerializeField] AudioMixerUpdateMode audioMixerUpdateMode;
    [SerializeField] AudioMixerSnapshot[] snapshots;

    bool isPaused;

    private void Start()
    {

        //mixer.updateMode = audioMixerUpdateMode;
        audioSource.Play();

        //audioSource.PlayOneShot(audioClip);
        //audioSource.PlayOneShot(audioClip2, 0.1f);

        //ChangeSnapshot();
    }

    public void OnPaused()
    {
        isPaused = !isPaused;
        Time.timeScale = isPaused ? 0f : 1f;


        PauseAudioSource();   
    }

    void PauseAudioSource()
    {
        if(isPaused)
        {
            audioSource.Pause();
        }else
        {
            audioSource.UnPause();
        }
    }

    void ChangeSnapshot()
    {
        mixer.TransitionToSnapshots(snapshots, new float[] { 0f, 1f}, 10f);
    }
}

これはPlayOneShotで再生した場合も使えました。

また、オーディオミキサーに「updateMode」という変数がありますが、これはスナップショットの遷移に使われます。

スナップショットを遷移させて音量をフェードアウトする場合、「Unscaled Time」では遷移の途中で一時停止しても遷移を続けますが、「Normal」では一時停止すると音量の変化が止まり、再開すると音量が再度下がり始めます。

エフェクト

Particle Systemでは、Delta Timeという項目で「Scaled」と「Unscaled」を切り替えることができます。「Scaled」ではタイムスケールが0だと停止し、「Unscaled」では停止しません。

Scaled
Unscaled

VFXグラフの場合、タイムスケールを0にすると停止します。パーティクルシステムのように切り替えることはできないようです。

詳細はこちら → https://store.steampowered.com/app/2178340/Reality/

コメントを残す

メールアドレスが公開されることはありません。