Как вызвать метод, проверяющий значения перечисления из другого скрипта? - PullRequest
0 голосов
/ 01 августа 2020

Я использую единицу и пытаюсь вызвать метод, который проверяет значения перечисления из отдельного скрипта.

У меня есть два куба с разными значениями перечисления, но когда я вызываю эту функцию, только первый значение перечисления читается вместо них обоих.

OtherScript.cs:

using UnityEngine;

public class OtherScript : MonoBehaviour
{
    Test test;

    private void Awake()
    {
        test = FindObjectOfType<Test>();
    }

    void Update()
    {
        test.PrintCubeNames();
    }
}

Test.cs:

using UnityEngine;

public class Test : MonoBehaviour
{
    public enum CubeName { Bill, Ted }
    public CubeName cubeName;

    public void PrintCubeNames()
    {
        print(cubeName);
    }
}

Ответы [ 2 ]

1 голос
/ 01 августа 2020

Ваше свойство cubeName просто принимает первое значение по умолчанию из вашего объявленного перечисления (которое в данном случае будет Bill). Чтобы напечатать все имена куба, вам нужно объявить свойство со списком перечислений, например:

Заменить:

public CubeName cubeName;

на:

private List<CubeName> CubeNameList = Enum.GetValues(typeof(CubeName)).Cast<CubeName>().ToList();

Тогда в вашем PrintCubeNames():

public void PrintCubeNames()
{
   foreach(var cubeName in CubeNameList) 
   {
      print(cubeName);
   }
}
0 голосов
/ 01 августа 2020

Вы можете преобразовать перечисление в массив строк, используя метод Enum stati c GetNames .

Пример:

public void PrintCubeName()
{
    var listName = Enum.GetNames(typeof(CubeName)).ToList();
    for (int i = 0; i < listName.Count; i++)
    {
        print(listName[i]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...