Ошибка CS0246 Не удалось найти тип или имя пространства имен при использовании перечисления

Синглтон-скрипт:

 public static ShipSingleton Instance { get { return _instance; } }


    private void Awake()
    {
        if (_instance != null && _instance != this)
        {
            Destroy(this.gameObject);
        }
        else
        {
            _instance = this;
            DontDestroyOnLoad(this.gameObject);
        }
    }

    public enum Ship
    {
        BasicShip
    };

    public Ship spawnShipID;

Объект Spawner

public GameObject basicShip;

void Start()
{
    if (ShipSingleton.Instance.spawnShipID == ShipSingleton.Ship.BasicShip)
    {
        Instantiate(basicShip, transform.position, Quaternion.identity);
    }
}

Скрипт кнопки

 public Ship ShipID = ShipSingleton.Ship.BasicShip;

    public void shipchoice()
    {

        SceneManager.LoadScene("watcherqueen");
        ShipSingleton.Instance.spawnShipID = ShipID;

    }

Продолжайте получать эту ошибку:

Ошибка CS0246 Не удалось найти тип или имя пространства имен "Корабль" (вам не хватает директивы using или ссылки на сборку?

Возможно ли, что мне не хватает ссылки на общедоступное перечисление в скрипте кнопки?


person spagoni    schedule 25.06.2020    source источник


Ответы (1)


О, теперь я понимаю, в чем проблема (и исправлю и в другом вопросе) -

Эта строка должна ссылаться на ShipSingleton.Ship, а не только на Ship:

public Ship ShipID = ShipSingleton.Ship.BasicShip;

Так должно получиться так:

public ShipSingleton.Ship ShipID = ShipSingleton.Ship.BasicShip;

Это потому, что тип перечисления Ship является членом ShipSingleton. В этом не было бы необходимости, если бы Ship был объявлен на уровне пространства имен следующим образом:

public enum Ship
{
    BasicShip
};

public class ShipSingleton
{
    public static ShipSingleton Instance { get { return _instance; } }


    private void Awake()
    {
        if (_instance != null && _instance != this)
        {
            Destroy(this.gameObject);
        }
        else
        {
            _instance = this;
            DontDestroyOnLoad(this.gameObject);
        }
    }

    Ship spawnShipID;
}
person Ruzihm    schedule 25.06.2020
comment
Работает отлично, есть кое-что, что мне еще нужно сгладить, но я думаю, что смогу сделать это сам. Большое вам спасибо за ваше время. - person spagoni; 25.06.2020
comment
@spagoni не забудьте отметить ответ как принятый, если он вам подходит (зеленая галочка слева от ответа) - person Guru Stron; 25.06.2020