【问题标题】:Enum value doesn't seem to be persisting枚举值似乎没有持续存在
【发布时间】:2019-05-05 04:05:56
【问题描述】:

我正在开发一款游戏,并尝试通过按钮设置难度。所以我有三个按钮,简单、中等、困难,当然,当您单击设置难度的任何一个时。

问题是,即使我的难度似乎已设置,但当游戏开始时它是不正确的。 请在下面查看我的代码。

public enum GameDifficulty
{
    Test,
    Easy,
    Medium,
    Hard
}
internal GameDifficulty Mode;//= GameDifficulty.Easy;

public void setToTest()
{

    Mode = GameDifficulty.Test;
}

public void setToEasy()
{
    Mode = GameDifficulty.Test;
}

public void setToMedium()
{
    Mode = GameDifficulty.Medium;
}

public void setToHard()
{
    Mode = GameDifficulty.Hard;
    Debug.Log("sET TO Hard");
}


//[Information("Selece Game Mode", MoreMountains.Tools.InformationAttribute.InformationType.Info, false)]
/// Set Variables based on selected mode
    // public motionDirections motionState = motionDirections.Vertical;

// Use this for initialization
void Start () {

    var storm = stormHerald.GetComponent<WindEffect>();
    Debug.Log(Mode);
    switch (Mode)
    {
        case GameDifficulty.Test:

现在,当我单击“硬按钮”时,我得到了设置为硬的调试,但是,在开始调试时显示它实际上正在设置为测试。我认为这是因为我的“模式”变量已定义,但我无法解决它。

如果有任何帮助,我们将不胜感激。

【问题讨论】:

  • 你可以在你的枚举中添加一个 None 选项。
  • @mchts 那会做什么?

标签: c# unity3d


【解决方案1】:

我并没有完全看到问题中的问题,而是对代码应该做什么的误解。

Mode 未初始化并获取枚举的默认值,即本例中的第一个可能值。请在此处查看更多枚举文档:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum

按下这些按钮不会使 Mode 状态持续存在。您必须记住,如果您希望状态持续存在,则必须保存它。一种方法是通过播放器设置:https://docs.unity3d.com/2019.1/Documentation/Manual/class-PlayerSettings.html

如果您在游戏前模式中按下这些按钮,那么该状态将不会转移或保留到最终产品或游戏模式中,因为每次我们重新编译时都会重新加载类(这必须理解为简化了 Unity 在后台所做的工作)。

【讨论】:

    【解决方案2】:

    问题就在这里:

    internal GameDifficulty Mode;//= GameDifficulty.Easy;

    这里:

    Debug.Log(Mode);

    我没有看到 Debug.Mode 变量的任何初始化。在您的评论中,您说您将其设置为简单,但是您怎么知道呢?我没有看到任何这样的任务。

    修改代码为

    internal GameDifficulty Mode=Test;//= GameDifficulty.Easy;

    (或 Easy 或其他)应该可以解决这个问题。

    【讨论】:

    • 这行得通,但不是我想要的。我试图从public void setToEasy() 设置该值,因为我的按钮调用它。我正在尝试设置一个用户界面,玩家可以在其中更改游戏难度。
    猜你喜欢
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 2011-01-10
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多