Looking for unity3d Answers? Try Ask4KnowledgeBase
Looking for unity3d Keywords? Try Ask4Keywords

unity3dUnityのシングルトン


備考

シングルトンの拘束を受けていない使用が悪い考えであるという説得力のある議論があるのは間違いありませんが、 gameprogrammingpatterns.comのSingletonのように 、シームレスなバックグラウンドミュージックのように複数のシーンでGameObjectをUnityに永続させたい場合があります。インスタンスを複数存在させることはできません。シングルトンの完璧な使用例

このスクリプトをGameObjectに追加することにより、インスタンス化されると(Sceneの任意の場所に挿入するなどして)、シーン全体でアクティブなままになり、インスタンスは1つしか存在しません。


ScriptableObjectUnityDoc )インスタンスは、ユースケースによってはシングルトンに対する有効な代替手段を提供します。それらは暗黙のうちに単一のインスタンスルールを強制しませんが、シーン間で状態を保持し、Unityのシリアル化プロセスをうまく使います。依存関係がエディタを介して注入されると、 Inversion of Controlも促進されます。

// MyAudioManager.cs
using UnityEngine;

[CreateAssetMenu] // Remember to create the instance in editor
public class MyAudioManager : ScriptableObject {
    public void PlaySound() {}
}
// MyGameObject.cs
using UnityEngine;

public class MyGameObject : MonoBehaviour
{
    [SerializeField]
    MyAudioManager audioManager; //Insert through Inspector

    void OnEnable()
    {
        audioManager.PlaySound();
    }
}

参考文献

Unityのシングルトン 関連する例