Jump to content

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


photo

Recommended Posts

Posted

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

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

А началось всё с того, что я, исследуя движок, захотел использовать файл конфигурации для сохранения данных по типу 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

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

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

Спасибо! 

 

 

Posted (edited)

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

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

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

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

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

Edited by Yurickon
Posted

Добрый день!

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

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

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

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

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

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

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

Я менял не через редактор имена миров (*.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
×
×
  • Create New...