【问题标题】:Lightweight variable visible to all scripts in same gameobject对同一游戏对象中的所有脚本可见的轻量级变量
【发布时间】:2018-12-01 03:27:01
【问题描述】:

我的玩家角色附加了几个脚本。

现在我想添加一个变量,该变量应该可以被这个游戏对象中的一些其他脚本访问。

我需要在物品栏场景中显示游戏对象。我通过

将他移动到库存场景
SceneManager.MoveGameObjectToScene(Hero, InventoryScene);

虽然游戏对象显示在此库存场景中,但玩家应该无法移动它。

所以我想在游戏对象中添加一个名为“isFrozen”的变量。当此变量为真时,不会处理任何玩家输入。

移动逻辑超过 3 个脚本。

我怎样才能最好地让脚本知道(以轻量级的方式)播放器当前被冻结?

或者我应该尝试将它们组合成 1 个脚本并将这个变量添加到这个单个脚本中吗?

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    是的,您可以让多个类访问单个变量。记住静态变量总是因为这个原因在这里。您可以通过将变量设置为 static 来访问此“isFrozen”变量,或者将变量所在的类设置为 singleton 并访问该变量。只要确保它是一个公共变量并且一切顺利。 如果您将“isFrozen”设为静态,那么您可以直接以MyClass.isFrozen 访问它。 如果您创建一个单例类,则可以像MyClass.Instance.isFrozen 一样访问它;

    【讨论】:

    • 请注意,staticsingleton 具有完全不同的含义。是的,它们都可以“从任何地方访问”,但这不是使用它们的原因。
    • @Draco18s 确实如此。这取决于使用的上下文。单例可以访问实例变量,而静态可以直接访问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多