Перейти к основному содержимому

Ресурсы

Ресурс — это всё, что вы загружаете или создаёте один раз и используете во многих местах.

РесурсКем используется
model3D-объектом
imageтекстурой или картинкой в карточке интерфейса
videoвидео-поверхностью или карточкой
audioисточником звука или одиночными звуками из скрипта
fontтекстом
materialпереиспользуется на многих объектах
geometryпереиспользуется на многих объектах
prefabсохранённым деревом объектов, которое можно бросить снова
splatзахватом в виде гауссовых сплатов
cardраскладкой интерфейса
patchвизуальным графом, который можно переиспользовать и вызывать
scriptповедением на TypeScript

Папки и пути

Ресурсы лежат в папках, как файлы. Путь — это имена папок через слэши:

Models/Trees/oak.glb

Внутри папки имена уникальны, так что путь всегда указывает ровно на одну вещь.

Скрипты импортируют друг друга по пути, а значит, переименование или перемещение ресурса переписывает импорты во всех скриптах, где он использовался. Руками чинить ничего не надо.

Импорт тянет зависимости за собой

Модель, пришедшая со своими текстурами, убирает их под себя. Переместите или удалите модель — они последуют за ней; управлять ими по одной не придётся.

Объекты ссылаются на ресурсы, а не содержат их

Объект-модель хранит ссылку на модель. Карта цвета материала хранит ссылку на изображение. Текстовый объект хранит ссылку на шрифт.

Именно поэтому подмена дёшева: поменяйте, куда указывает ссылка, — и всё, что ей пользуется, обновится разом. Перекрасьте все вывески в сцене, отредактировав один материал.

Этим же объясняется симптом: потерянный ресурс выглядит как объект, который существует, но не рисуется, а не как сообщение об ошибке.

Загрузка идёт, пока сцена работает

Ресурсы приезжают после того, как сцена уже открылась, и это заметно:

  • модель может появиться через мгновение после старта сцены;
  • текстура может ненадолго отсутствовать на, казалось бы, готовом материале;
  • текст появляется с запозданием, потому что верстается асинхронно.

Для всего, что должно быть на экране с самого первого кадра (титульная карточка, логотип), избегайте зависимости от большой загрузки или держите сцену скрытой, пока контент не приедет.


Дальше: Камеры — то, через что смотрит ваш посетитель.