Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使switch语句与枚举一起工作?C统一_C#_Unity3d_Enums - Fatal编程技术网

C# 如何使switch语句与枚举一起工作?C统一

C# 如何使switch语句与枚举一起工作?C统一,c#,unity3d,enums,C#,Unity3d,Enums,描述 我正在编写一个脚本来淡出Unity中的UI元素,类似于选择器,在这里可以选择淡出的类型、持续时间和要淡出的图像 我发现enum是实现该结果的最佳选项,但我有一个问题,当我运行enum的code-only元素时,另一个元素不工作,无论我是否使用switchor(如果只运行第一条语句),我都不知道代码出了什么问题 请解释你的答案 请解释代码错误的原因 请给出如何改进的反馈 我使用的是Unity 5.3.5f1版和Visual Studio Community 2015 目标 使用开关或if使枚

描述

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

我发现enum是实现该结果的最佳选项,但我有一个问题,当我运行enum的code-only元素时,另一个元素不工作,无论我是否使用switchor(如果只运行第一条语句),我都不知道代码出了什么问题

请解释你的答案 请解释代码错误的原因 请给出如何改进的反馈 我使用的是Unity 5.3.5f1版和Visual Studio Community 2015

目标

使用开关或if使枚举正常工作 能够使用FadeOperations类中的变量 测试类中的计算 从数组中选择所需操作的类型 从Heriarchy中选择一个UI元素并使其褪色 台阶

创建新的Unity项目2D或3D 创建用户界面图像 创建空的游戏对象 创建新的C脚本,我称之为Test 将新脚本附加到空游戏对象 代码

这是我的密码

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;
         }
      }
  }
切换前的Log\u fo.fadeType的结果


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

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;
            }
        }
     }
}

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

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;
            }
        }
     }
}

您不需要为_fo.fadeType分配一个值,这样它就可以得到默认值,而默认值通常是枚举的第一个值。此外,你的问题很不清楚。主题似乎是家庭作业,但是你应该只发布那些你有问题的部分,而不是整个任务。你能解释更多吗?你必须为_fo.fadeType设置一个值,你不能期望你的应用程序简单地为它提供任意值。如果不这样做,对象只会得到它的第一个值,因为枚举不能为null。。。所以如何改进代码?我们不能告诉您如何设置此值,您必须了解自己。显然,您首先需要一些编程的基础知识,开关做什么,以及如何创建类的实例,特别是如何处理枚举。基本上可以归结为您使用新的FadeOperations创建FadeOperations实例。但是,您永远不会更改它的任何属性—无论是fadeType、Duration还是fadeImage。您必须明确地设置thopse,否则编译器将为它们使用默认值,例如第一个枚举值。您不为_fo.fadeType分配一个值,因此它将获得默认值,通常是枚举的第一个值。此外,你的问题很不清楚。主题似乎是家庭作业,但是你应该只发布那些你有问题的部分,而不是整个任务。你能解释更多吗?你必须为_fo.fadeType设置一个值,你不能期望你的应用程序简单地为它提供任意值。如果不这样做,对象只会得到它的第一个值,因为枚举不能为null。。。所以如何改进代码?我们不能告诉您如何设置此值,您必须了解自己。显然,您首先需要一些编程的基础知识,开关做什么,以及如何创建类的实例,特别是如何处理枚举。基本上可以归结为您使用新的FadeOperations创建FadeOperations实例。但是,您永远不会更改它的任何属性—无论是fadeType、Duration还是fadeImage。您必须明确设置thopse,否则编译器将使用默认值,例如第一个枚举值。正确-顺便说一句,只使用标题而不是工具提示-更酷:正确-顺便说一句,只使用标题而不是工具提示-更酷: