如何使用枚举使switch语句有效? C#Unity

时间:2016-07-05 03:59:11

标签: c# unity3d enums

描述

我正在编写一个脚本来淡化Unity中的UI元素,类似于选择器,您可以在其中选择淡入淡出的类型,持续时间和淡化图像

enter image description here

我发现enum是实现这个结果的最佳选择,但是我有一个问题,当我运行enum工作的唯一代码而另一个不用时,无论我是否使用{{1或者switch只是第一个语句运行,我不知道代码有什么问题

  • 请解释你的答案
  • 请解释代码错误的原因
  • 请提供有关如何改进的反馈

我使用Unity版本5.3.5f1和Visual Studio Community 2015

目标

  • 使用ifswitch
  • 使枚举正常工作
  • 能够使用FadeOperations类中的变量进行制作 Test类中的计算
  • 从数组中选择所需操作的类型
  • 从Heriarchy中选择一个UI元素并淡化它

步骤

  • 创建新的Unity项目(2D或3D)
  • 创建UI图像
  • 创建空游戏对象
  • 创建新的C#脚本(我称之为测试)
  • 将新脚本附加到空游戏对象

代码

这是我的代码......

if

using UnityEngine; using UnityEngine.UI; public enum FadeManager { fadeIn, fadeOut }; [System.Serializable] public class FadeOperations { [Tooltip("Type of fading")] public FadeManager fadeType; [Tooltip("Duration time of the fading")] public float duration; [Tooltip("Select the image to fade")] public Image fadeImage; } public class Test : MonoBehaviour { [Tooltip("Select your type of fade")] public FadeOperations[] fadeOperations; //Reference to the class FadeOperations private FadeOperations _fo = new FadeOperations(); //Loop for debug private void Start() { Debug.Log(_fo.fadeType); switch (_fo.fadeType) { //This statement works case FadeManager.fadeIn: Debug.Log("Fadein"); //Only this piece of code works break; //This statement doesn't work case FadeManager.fadeOut: Debug.Log("Fadeout"); break; } } }

之前的日志(_fo.fadeType)的结果
switch

1 个答案:

答案 0 :(得分:2)

以下是您可能想要做的事情:

public class Test : MonoBehaviour
{
    [Tooltip("Select your type of fade")]
    public FadeOperations[] fadeOperations;

    //Loop for debug X  NOTE: Start method runs only one time.dont expect it to run it for multiple time 
    private void Start()
    {
        foreach(var operation in fadeOperations)
        {
            Debug.Log(operation.fadeType);
            switch (operation.fadeType)
            {
                case FadeManager.fadeIn:
                    Debug.Log("Fadein"); // write your fading in code here
                    break;

                case FadeManager.fadeOut:
                    Debug.Log("Fadeout"); // write your fading out code here
                    break;
            }
        }
     }
}