在Unity C的课外枚举

时间:2016-07-04 08:49:55

标签: c# class unity3d enums

我正在创建一个脚本来管理Unity3D中UI元素的淡入淡出,并且在某些时候我会遇到枚举

前几天,我看到一个非常酷的资产,以淡化元素,并决定逆转engeneer它

经过一段时间研究教程和阅读本页面中的问题后,我被困在使用枚举,我不知道如何从另一个班级访问我的枚举,所以我想寻求帮助

我正在使用Unity版本5.3.5f1

目标

  • 淡化Unity中的UI元素(图像,按钮等)
  • 通过脚本淡出
  • 使用枚举来执行此操作
  • 访问课程外的枚举

如何重现

  • 新的Unity项目(无论是2D还是3D)

  • 清空游戏对象

  • UI元素(图片)

  • 图像填充屏幕及其颜色(任何颜色)

  • 新的C#脚本,我称之为测试

完成

  • 阅读enums
  • 带枚举的基础课

代码C#

这是我的代码(到目前为止)

using UnityEngine;
using UnityEngine.UI;

[System.Serializable]
public class FadeOperations
{
   public enum FadeManager
{
    fadeIn,
    fadeOut
};

  [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
{
  //Where do I acces the enum inside this class??

  //This is the variable for the inspector to see the elements inside the other class
  public FadeOperations[] fadeOperations;

  private void Start()
  {
  }
}

我很乐意阅读好的解释和不友好的答案

由于

1 个答案:

答案 0 :(得分:3)

从技术上讲,如果在类中声明枚举,则该枚举将充当嵌套类。

所以,使用目前的代码库,您需要在FadeOperations之外引用FadeManager,如下所示:

public class Test : MonoBehaviour
{
  // the variable of FadeManager type outside FadeOperations
  public FadeOperations.FadeManager fadeManager;

  public FadeOperations[] fadeOperations;

  private void Start()
  {
  }
}

但是,您可能会发现将枚举移到FadeOperations类之外更实际:

public enum FadeManager
{
    fadeIn,
    fadeOut
};

[System.Serializable]
public class FadeOperations
{
    //FadeOperations body goes here...
}

然后,您可以在FadeManager和其他类中直接访问FadeOperations类的名称。

由您决定哪种方式更适合您。