Unity和单例

Tulenber 21 February, 2020 ⸱ Beginner ⸱ 1 min ⸱

Singleton,整洁,可乐回来了。

当然,模式不仅在游戏开发中,而且在一般编程中,都是最重要的主题之一。 在程序员职位的面试中肯定会有关于模式的问题。显然第一个问题将是关于单例。^_^
如果您缺乏理论知识,请阅读本书关于辛格尔顿的章节

实作

让我们添加另一个实现:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using UnityEngine;

public class Singleton<T> : MonoBehaviour where T : Singleton<T>
{
    private static T instance;

    public static T Instance
    {
        get => instance;
    }

    public static bool IsInstantiated
    {
        get => instance != null;
    }

    protected virtual void Awake()
    {
        if (instance != null)
        {
            Debug.LogError("[Singleton] 尝试实例化单例类的第二个实例。");
        }
        else
        {
            instance = (T) this;
        }
    }

    protected void OnDestroy()
    {
        if (instance == this)
        {
            instance = null;
        }
    }
}
用法:

1
2
3
4
5
6
7
public class GameManager : Singleton<GameManager>
{
    protected GameManager() { }
 
    // 然后像往常一样将任何代码添加到所需的类中。
    ...
}

结论

对于Unity项目,单例是基本模式之一。 在我们的项目中,我们将使用名为Managers的类。 它们将处理许多不同的任务,例如场景,并且它们之间的过渡将由SceneManager处理,或者CameraManager将处理相机移动。 因此,这是一个很小但基本的帖子,因此肯定需要将其退回。下次见!^_^


如果您喜欢这篇文章,可以为它提供支持



Privacy policyCookie policyTerms of service
Tulenber 2020