我正在开发游戏,并且尝试通过按钮设置难度。因此,我有三个按钮,分别是“简单”,“中等”,“困难”,当然,当您单击设置困难的那个按钮时。
问题是,即使我的难度似乎已经确定,但在游戏开始时却是不正确的。 请在下面查看我的代码。
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:
现在,当我单击“硬按钮”时,我得到了已将其设置为“硬”的调试信息,但是,在启动调试时,表明它实际上已被设置为测试。我认为这是因为我的“模式”变量已定义,但我无法解决。
感谢您的协助。
答案 0 :(得分:1)
问题在这里:
internal GameDifficulty Mode;//= GameDifficulty.Easy;
在这里:
Debug.Log(Mode);
我没有看到Debug.Mode
变量的任何初始化。在评论中,您说您将其设置为easy,但是您怎么知道呢?我看不到有这样做的作业。
修改代码为
internal GameDifficulty Mode=Test;//= GameDifficulty.Easy;
(或Easy或其他)应该解决此问题。
答案 1 :(得分:1)
我没有确切地看到问题所在,但对代码应该做什么产生了误解。
Mode
未初始化,并获取枚举的默认值,在这种情况下,它是第一个可能的值。请参阅此处以获取更多枚举文档:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum
按这些按钮将不会使模式状态保持不变。您必须记住,如果您希望状态保持不变,则必须保存它。一种方法是通过播放器设置:https://docs.unity3d.com/2019.1/Documentation/Manual/class-PlayerSettings.html
如果您在赛前模式下按下这些按钮,那么该状态将不会转移或保留到最终产品或游戏模式,因为每次我们重新编译时都会重新加载类(这必须理解为简化了Unity在幕后所做的事情。