error CS0246: The type or namespace name `NewSceneSetup' could not be found. Are you missing an assembly reference?

133
04 мая 2021, 16:50

Версия Unity:Unity 5.6.6f2 (64-bit) Не могу понять , что подключить в using чтоб ошибки не было. Добавил :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.SceneManagement;
#endif
    ...
    public class SceneManagerWindow  : MonoBehaviour
    {
    ...
        protected NewSceneSetup newSceneSetup = NewSceneSetup.DefaultGameObjects;
        protected NewSceneMode newSceneMode = NewSceneMode.Single;
    ...
    }
    ...

Но всё равно ошибка:

Assets/Scene/SceneManagerWindow.cs(15,12): error CS0246: The type or namespace name `NewSceneSetup' could not be found. Are you missing an assembly reference?

думаю это из-за

#if UNITY_EDITOR
#endif

Answer 1

Даже если убрать #if UNITY_EDITOR - проект все равно не соберется. Заглянем в документацию к NewSceneSetup и NewSceneMode и прочтем описание:

Used when creating a new Scene in the Editor.

Что уже намекает, что данные типы нигде, кроме как в редакторе, использовать нельзя. Если данный класс полностью отвечает за функционал, определенный для редактора - окружайте весь класс #if UNITY_EDITOR'ом:

#if UNITY_EDITOR
public class SceneManagerWindow  : MonoBehaviour
{
...
    protected NewSceneSetup newSceneSetup = NewSceneSetup.DefaultGameObjects;
    protected NewSceneMode newSceneMode = NewSceneMode.Single;
...
}
#endif

Либо, если данный класс лишь в некоторых местах использует API редактора - оборачивайте вызовы API во все те же #if:

public class SceneManagerWindow  : MonoBehaviour
{
...
    #if UNITY_EDITOR
    protected NewSceneSetup newSceneSetup = NewSceneSetup.DefaultGameObjects;
    protected NewSceneMode newSceneMode = NewSceneMode.Single;
    #endif
...
}

P.S.

Нет, использовать API редактора в Player билдах никак не получится.

Answer 2

Как мне кажется вы засунули подключение библиотеки в платформенно-зависимую компиляцию (PDC), что не есть хорошо. Так как данный метод используется по другому: Например, для разделения кода под платформу IOS и Android, и тд.

А компилятор ругается из-за того что вы не настроили Build Settings в проекте, он как бы не видит данные строки (для него они не существуют на данный момент):

#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.SceneManagement;
#endif

Данная ошибка, это и подтверждает (особенно последние слова):

The type or namespace name `NewSceneSetup' could not be found. Are you missing an assembly reference?

Так-как большинство IDE с плагином Unity не способны определить как вы собираетесь использовать PDC в своем проекте, они не отображают это как ошибку. По этому вы и не смогли определить в чем проблема, так как в IDE все есть и подключено, но во время сборки эти правила были исключены.

Также для более корректной работы необходимо подключить эти библиотеки так:

using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine.SceneManagement;
READ ALSO
Работа с двумя мониторами Wpf MVVM

Работа с двумя мониторами Wpf MVVM

Можете подсказать, вот у меня есть 2 монитора и мне нужно по нажатию кнопки перенести окно WPF на другой монитор и при повторном нажатии кнопки...

69
Создание нескольких picturebox

Создание нескольких picturebox

Разрабатываю игру flappy bird, столкнулся с такой проблемой, что не могу прорисовать трубы(PictureBox)Написал код для прорисовки труб, создал массивы,...

91
Хранение соли пароля

Хранение соли пароля

Где её хранить и в каком виде? В базе данных, в отдельной строке в таблице Users?

84