Jump to content

[SOLVED] Проблемы с файлом конфигурации.


photo

Recommended Posts

Всем добрый день! 

Ну для меня он не очень добрый - я тут что-то напортачил и игра не собирается( 

А началось всё с того, что я, исследуя движок, захотел использовать файл конфигурации для сохранения данных по типу PlayerPrefs (всё тот же Unity). Это нужно для работы системы диалогов над которой сейчас тружусь. Вот значит я записал вот такую конструкцию:

        if(Input.IsKeyDown(Input.KEY.F1))
        {          
            i_conf = Config.GetInt("conf_save", 100);
            Log.Message(i_conf);
        }
        if(Input.IsKeyDown(Input.KEY.F2))
        {
            Config.SetInt("conf_save", 100);//записываем значение квеста QuestName и присваиваем значение в QuestValue (данные берутся из файла Dialoque)
            Config.Path = "data/configs/defailt.config";
            Config.Save();  
        }

По нажатии клавиши F1 я хотел взять переменную i_conf. При нажатии на F2 переменная должна сохраняться в конфигурационный файл что бы потом можно было её извлечь и использовать в коде. Но теперь понял что это так не работает. 

Для точности описания следует отметить, что я использовал разные пути. И data/configs/my.config И  data/configs/save_dial.config

В общем, делал беспечно как-то, хотя внутри понимал, что так нельзя...

По итогу после этих манипуляций получаю ошибку сборки. Вижу что в директории data постоянно, при каждом запуске экземпляра игры из редактора, создаётся еще одна папка data с вложенной в неё папкой configs c четырьмя дефолтными файлами. Думаю на это и ругается редактор и выкидывает в консоль следующее сообщение:

error MSB3073: выход из команды ""C:\Program Files\dotnet\dotnet.exe" "bin\cspropgen_double_x64d.dll" -p "bin\Siberian_x64d.dll" -data_path ../data/" с кодом -1073741819.

Игра тут же вылетает, даже не запустившись. Редактор работает. Если выйти из редактора и попытаться зайти вновь, то этого не произойдёт, пока не удалить эту  вновь созданную папку data в корневой data

И при запуске экземпляра игры  ситуация повторятся.

Надеюсь объяснил. Понятия не имею как починить это дело и вернуть всё в рабочее состояние!  Прошу уважаемой сообщество помочь в этой проблеме. 

Спасибо! 

 

 

Link to comment

Ребята, что-то я поторопился с вопросом. Прошу прощения. Разобрался. 

Заметил, что meta данные файлов  конфигурации  которые были в корне data,  отличаются по времени создания с самими default файлами. Сделал вывод, что движок их не видит и создаёт еще одну конфигурацию. Две конфигурации для него видимо многовато, происходит конфликт и краш.  В общем тупо переименовал в проводнике windows (в проводнике редактора они не отражаются) папку configs на  configs_ и... вуаля!

Извиняюсь еще раз! Всем удачи)

UP.  Небольшое дополнение. Если создавать файл конфигурации вот по такому пути: Config.Path = "data/configs/my.config"; то будет происходить то, что описано в посте №0. Но если, например убрать папку data из пути и прописать его так: Config.Path = "configs/my.config"; то всё прекрасно работает. 

Может, кому пригодится...

Edited by Yurickon
Link to comment

Добрый день!

Вижу, что Вы уже сами нашли решение своей проблемы, но могу немного объяснить причины её возникновения.

Проблема с путями к файлам возникла из-за того, что Вы используете виртуальные пути, которые уже указывают на расположение файлов относительно -data-path (папки data/). Таким образом, указывая Config.Path = "data/configs/my.config", Вы говорите файловой системе, что в папке data/ находится другая папка data/ с вложенными в нее папкой configs/  и файлом my.config.

А в связи с тем, что проект UNIGINE может содержать только одну папку data/, и происходит краш и сбой работы редактора.

Подробнее про пути и файловую систему в целом, Вы можете узнать в этой статье.

  • Like 1
Link to comment
  • silent changed the title to [SOLVED] Проблемы с файлом конфигурации.
  • 1 year later...

Как можно отремонтировать проект?

У меня возникла такая же проблема.

Я менял не через редактор имена миров (*.world) и теперь проект перестал компилится. При этом запуск через батники мир запускает. 

Лог показывает такое

Внутри файла *.csproj я ничего не трогал.

Quote

I:\Unigine_MY_PROJECTS\LandscapeTest\LandscapeTest.csproj(65,3): error MSB3073: выход из команды ""C:\Program Files\dotnet\dotnet.exe" "bin\cspropgen_x64d.dll" -p "bin\LandscapeTest_x64d.dll" -data_path ../data/" с кодом -532462766.
    Предупреждений: 0
    Ошибок: 1

Прошло времени 00:00:05.62

 *  The terminal process "C:\Program Files\dotnet\dotnet.exe 'build', 'I:\Unigine_MY_PROJECTS\LandscapeTest/LandscapeTest.csproj', '-c', 'Debug'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

В Visual Studio Code можно запустить Debug даже с ошибкой и проект компилится, но из редактора UNIGINE нет.

Я создал новый проект и посмотрел строку на которую ведет ошибка моего проекта error MSB3073

в рабочем проекте строка 1 в 1 как в моём нерабочем.

 

PS Решил проблему, оказалось я world из проекта с точностью double кинул в проект с float precision, из-за этого в EXEC добавилась строка cspropgen_double_x64dб я удалил её и проект снова работает.

<Exec Command="&quot;$(DOTNET_HOST_PATH)&quot; &quot;$(OutputPath)cspropgen_double_x64d.dll&quot; -p &quot;$(OutputPath)$(AssemblyName).dll&quot; -data_path ../data/" Condition="&apos;$(Configuration)&apos;==&apos;Debug&apos; And $(SkipPostBuild)==&apos;false&apos;"/>
Edited by sevas55
Solved
  • Like 1
Link to comment
×
×
  • Create New...