Jump to content

[SOLVED] Как получить доступ к переменным другого мира?


photo

Recommended Posts

Всем привет! 

Вопрос, собственно, в заглавии. Делаю главное меню - это [маленький мир], для быстрой загрузки. Надо получить доступ к переменным игрового [большого мира]  для создания окон со списками сохранений, возможностью загрузок и.т.д. Это всё уже реализовано в [большом мире]. Надо только получить доступ из главного меню.  Как-то же переменные должны коммуницировать между мирами?.. )

Спасибо за любой ответ по теме!

Link to comment

День добрый Yurickon,

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

Самый правильный вариант:
1) Использовать проперти как ассеты (файлы .prop в AssetBrowser). Создаем, заполняем поля в редакторе (вне какого-либо загруженного мира), используем эти значения везде (из любого мира). Этот подход аналогичен ScriptableObject из Юнити.

Экзотические варианты:
2) Читать файл мира (.world) из главного меню напрямую. Это обычный XML файл и внутренними инструментами (через класс Xml) можно довольно легко прочесть то, что интересно. Не загружая при этом мир.
3) Использовать NodeLayer'ы, которые будут общими между мирами. Тогда и главное меню и миры игры будут всегда иметь одни и те же общие, глобальные ноды. Но, там есть ограничения: не стоит ссылаться в NodeLayer'е на объекты вне его.
4) Создать свою базу данных в любом формате, вне наших миров. И читать/манипулировать ею откуда угодно.

С уважением,
Александр

  • Like 2
Link to comment

alexander, приветствую!

С проперти я не работал, не использовал их, писал компоненты. Почитал манулы по этой теме... мда, будет не просто во всём этом разобраться. 

В любом случае, спасибо за указанное направление в работе. 

Link to comment

Еще раз всем привет!

Пишу сюда в продолжение темы. Итак. Со списком сохранений кочующим из разных миров и его загрузкой из главного меню, я разобрался. Просто получил доступ к файлам сохранения и вывел их с сортировкой по дате создания в форму загрузок Главного меню... Но сейчас не об этом) 

Все мои [2 мира] прекрасно загружаются и работают если всё это делать из редактора.

quest_world_0.thumb.jpg.d8a0baf3120b4bdf5360593dae14e61e.jpg

После билдинга же я получаю Главное меню без растительности:

quest_world_2.thumb.jpg.09b7ec05922639008166c85b185280bc.jpg

При сборке проекта использовал эти настройки:

quest_world_1.thumb.jpg.d463eb16e20ed8e324c9bc95d003199a.jpg

quest_world_3.thumb.jpg.c9264e1519b815eac5629b5471011f49.jpg

Причём в Главном меню билда при нажатии на новая игра не происходит загрузки основного игрового мира, движок зависает. 

Уважаемые разработчики, подскажите что и где нужно прописать, что бы и в билде всё работало как и в редакторе!

Спасибо!

Link to comment

Надо смотреть лог ошибок в билде и добавлять файлы, которые исключаются. Для начала нужно попробовать отжать галочку "Delete Unused Assets". Можно также нажать кнопку Check и посмотреть что будет включено в билд. а что нет.

Если каких-то файлов не хватает, можно добавить их форсированно.

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment

Приветствую, silent!

Галочку "Delete Unused Assets" отжал, кнопкой Check проверил. Все файлы которые я создавал в мире "Главное меню", присутствуют. 

В логе после билда вот такие предупреждения:

quest_world_4.thumb.jpg.f47460056d76b883bbe0e8cc62221c4e.jpg

Результат прежний.

Link to comment

Тогда надо смотреть в лог движка уже на старте самого проекта (не в редакторе). А вообще, конечно, странное поведение.

Если можете залить рабочую версию проекта куда-нибудь на онлайн диск или к нам на FTP - было бы интересно поглядеть на то что происходит во время билда. Возможно, из-за не найденного бага некотрые файлы просто не копируются.

Спасибо.

  • Like 1

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment

silent, спасибо!

Ссылку на яндекс-диск с проектом скину в личку в самое ближайшее время...

Link to comment

Добрый день, Yurickon!

Проблема в том, что проект потерял ссылку на LandscapeLayerMap из-за бага. Чтобы это починить сделайте следующие шаги:

1) Загрузите мир Main_menu.world
2) В World Nodes найдите LandscapeLayerMap
3) В Parameters → Landscape Asset → Landscape
4) В поле назначьте вашу LandscapeLayerMap.Lmap из Asset Browser
image.png

Баг будет починен к релизу 2.18

С уважением, Иван

  • Thanks 1
Link to comment

Приветствую, ipakseev!

Сделал всё по вашей инструкции и всё получилось! Правда у меня поле, где у вас на скрине красный текст (landscape), всё корректно выбрано. Нажав на лупу я убедился что ссылка идёт на тот самый asset. И при этом, во время загрузки, мир не прогружался... Переназначив ссылку согласно вашей инструкции, всё прогрузилось!

Огромное спасибо!  

  • Like 1
Link to comment
  • silent changed the title to [SOLVED] Как получить доступ к переменным другого мира?
×
×
  • Create New...