Чем вызвана ошибка UnityEditor.AssetDatabase:Refresh()?

289
01 октября 2018, 22:50

Столкнулся с такой ошибкой:

Assets/AAA/Ander/Level_s/Part_2(new)/Level_2_2. is not a valid asset file name. Please make sure there are no slashes or other unallowed characters in the file name. The file will be ignored.

Не могу понять в чем проблема. Ошибка появляется в режиме редактирвания, когда переключаюсь между сценами. Все буквы в проекте - латиница. Каталог Level_2_2 сгенерирован самой Unity для хранения лайтмапов. В этом каталоге я так же храню другие данные сцены.

При двойном клике по этой ошибке ничего не происходит.

Так же появляется такая ошибка:

Assets/AAA/Ander/Level_s/Part_2(new)/Level_2_2. is not a valid asset file name. Please make sure there are no slashes or other unallowed characters in the file name. The file will be ignored. UnityEditor.AssetDatabase:Refresh() Bridge_Corrector_Abstract:SaveMeshAsAsset() (at Assets/Units/Rooms/Part_2/Bridge/Scripts/Bridge_Corrector_Abstract.cs:58) Bridge_Corrector_Abstract_Editor:OnInspectorGUI() (at Assets/Units/Rooms/Part_2/Bridge/Editor/Bridge_Corrector_Abstract_Editor.cs:16) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

В скрипте эта ошибка вызвана методом сохранения меша в ассет:

public void SaveMeshAsAsset () {

    string path = getAssetPath ();
    if (Directory.Exists ( path ) == false)
        Directory.CreateDirectory ( path );
    string assetName = path + getAssetName ();
    if (!string.IsNullOrEmpty ( assetName )) {
        AssetDatabase.CreateAsset ( GetComponent<MeshFilter> ().sharedMesh, assetName );// OR REWRITE ASSET
        AssetDatabase.Refresh ();//<<<< Здесь ошибка, стока 58
        EditorGUIUtility.PingObject ( AssetDatabase.LoadAssetAtPath ( assetName, typeof ( Object ) ) );
    }
}

Меш сохраняется, путь верный, путь не содержит двойных слешей, всяких символов типа "?,.*%". Единственно что, assetName содеожит еще и имя файла, в итоге получается что-то типа: path/fileName.asset

В чем может быть ошибка?

Answer 1

Unity умеет приподносить сюрпризы.

В процессе работы я случайно создал папку с именем "Level_2_2." и работал в ней. Позже заметил ошибку и исключил точку из названий создаваемых папок.

В редакторе Unity есть подобие проводника, которое отображает все файлы и дерево каталогов. Так вот, как оказалось, кастомный проводник Unity не отображал папку "Level_2_2." С одной стороны я искал эту папку в кастомном проводнике и не находил, с другой стороны Unity постоянно сетовал на какую-то несуществующую папку.

Проводник операционки показывает эту папку. Удаление папки устранило ошибку.

READ ALSO
LINQ-запросы. Использование оператора group

LINQ-запросы. Использование оператора group

Изучая LINQ-запросы, надумал себе следующую задачку: "Необходимо написать программу, которая будет группировать студентов по их возрасту, а потом...

190
ошибка при импорте метода OpenGL

ошибка при импорте метода OpenGL

при импорте метода glCopyBufferSubData выдаёт ошибку

188
Подключение к wifi через netsh c#

Подключение к wifi через netsh c#

Как можно вывести список сетей, уровень их сигнала, и подключиться к сети через netsh c#?

178
Возможно ли соединить AvaloniaUI с MaterialDesignInXamlToolkit?

Возможно ли соединить AvaloniaUI с MaterialDesignInXamlToolkit?

Разрабатывал проект на WPF с использованием MaterialDesignInXamlToolkit, потом понял что необходимо иметь кроссплатформенность для данного проектаУзнал...

169