C# 如何使Unity Singleton通用?

C# 如何使Unity Singleton通用?,c#,unity3d,C#,Unity3d,我目前正在审查统一代码 我正在研究如何使单例通用 慢慢地,我从单身汉开始学习 在查看代码时,我有很多问题 就是这样:公共类游戏singleton:monobhavior其中T:monobhavior 将MonoBehavior指定为类型参数T的约束意味着什么 以及 为什么在创建管理器时通常使用Singleton 以及 创建管理器时,公共类GameManager:GameSingleton{} 我使用这些代码,这是什么意思 以及 当这些被实现时,逻辑是如何流动的 就这些 我必须学习什么才能理解这些

我目前正在审查统一代码

我正在研究如何使单例通用

慢慢地,我从单身汉开始学习

在查看代码时,我有很多问题

就是这样:
公共类游戏singleton:monobhavior其中T:monobhavior

  • 将MonoBehavior指定为类型参数T的约束意味着什么
  • 以及

  • 为什么在创建管理器时通常使用Singleton
  • 以及

  • 创建管理器时,
    公共类GameManager:GameSingleton{}
  • 我使用这些代码,这是什么意思

    以及

  • 当这些被实现时,逻辑是如何流动的
  • 就这些

    我必须学习什么才能理解这些东西


    作为一个初学者,我知道的不多。我需要你的帮助

    1.
    其中T:monoBehavior
    ,意味着该类使用的任何泛型都必须继承
    monoBehavior
    ,如果没有继承,您将得到编译时错误


    2.根据我的经验,管理者通常是单身,因为他们有很长的资源启动时间。例如,如果您的管理器正在管理与
    redis
    服务器的连接,并且正在使用StackExchange redis nuget包。它们明确声明您应该只打开其中一个连接,因为它是线程安全的,并且具有相对扩展的创建方法


    3. <代码>公共类Gamemanager:GameSingleton。{}这意味着您有一个继承了
    GameSingleton
    Gamemanager
    类,其中
    Gamemanager
    作为通用类


    4.为了理解遗传和泛型,我会学习


    5.为了理解unity,我将研究1)这意味着您将要创建的单例的类型
    T
    必须继承自
    monobhavior
    ,否则您将得到编译错误

    2) 因为通常您不希望特定的管理器在场景中出现多次(即实例数)。例如,设想一个
    ScriptManager
    ,它处理所有
    FixedUpdate
    Update
    LateUpdate
    回调,而不是让Unity来处理它们:您不希望场景中出现多个这样的管理器。Singleton模式满足此条件(场景中的
    ScriptManager
    实例不超过一个)

    3) 这意味着您告诉编译器类型
    T
    GameManager
    。如果您查看类
    GameSingleton
    的代码,您将看到有一个
    私有静态T\u实例
    ,然后是一个
    公共静态T实例
    属性等,
    GameSingleton
    类知道
    \u实例
    实例
    必须是
    GameManager
    类型。此外,您可以通过更改类型
    T
    (即:GameManager、ScriptManager、CubeManager等)来创建不同的管理器


    4) 你需要学习C#泛型。

    取决于你使用的客户端。我不知道你的意思。你想和哪个聊天客户端聊天?谷歌闲逛,lync,gchat,旧式aol聊天。你想怎样聊天?我们也可以通过stackOh进行对话!!我想要stackoverflow chat.ROOM的名称是:Unity c#案例1,如果format参数的约束不是MonoBehavior,那么它在编译过程中是否会无条件失败?是否只是将MonoBehavior设置为约束以避免错误?案例2,案例3你能解释得更简单些吗?