AssetRegistry — это важный компонент в PlayCanvas,
который занимается регистрацией, управлением и доступом к ресурсам
проекта, таким как текстуры, модели, звуки, скрипты и другие ассеты. Он
играет центральную роль в обеспечении организованности и эффективности
работы с большими проектами. Важнейшими операциями, которые
предоставляет AssetRegistry, являются регистрация новых
ассетов, их поиск и удаление. В этой статье рассматриваются эти аспекты
в деталях.
В PlayCanvas регистрация ассетов — это процесс, при котором новый
ресурс добавляется в реестр и становится доступным для использования в
проекте. Для этого PlayCanvas предоставляет объект
AssetRegistry, через который можно управлять всеми ассетами
в приложении.
Регистрация ассетов осуществляется через метод
register(). Этот метод принимает два основных параметра:
тип ассета и его идентификатор.
Пример регистрации текстуры:
var texture = new pc.Asset('textureName', 'texture', {
url: 'assets/texture.jpg'
});
app.assets.add(texture);
В этом примере создается новый ассет типа texture с
названием textureName. Далее этот ассет добавляется в
реестр через метод add(). После того как ассет добавлен,
его можно использовать в любом месте проекта, получая доступ через
AssetRegistry.
PlayCanvas поддерживает различные типы ассетов, среди которых можно выделить:
Каждому типу ассета соответствуют свои особенности и дополнительные параметры, которые необходимо указать при его создании.
После того как ассет был зарегистрирован в реестре, его можно найти и
использовать в проекте. Для поиска ассетов в PlayCanvas используется
метод find(). Этот метод позволяет найти ассет по его имени
или идентификатору.
Пример поиска ассета по имени:
var texture = app.assets.find('textureName');
Если ассет с таким именем существует, он будет возвращен. В противном
случае возвращается null. Важно учитывать, что поиск
происходит в пределах всех ассетов, загруженных в проект.
Для поиска ассетов можно также использовать другие методы, например:
findById(id): поиск по уникальному идентификатору
ассета.findByUrl(url): поиск ассета по URL-адресу.Эти методы предоставляют гибкие способы доступа к ассетам в проекте, что важно при работе с большим количеством ресурсов.
Удаление ассетов из реестра происходит с помощью метода
remove(). Этот метод удаляет ассет по его имени или
идентификатору. Удаление ассета важно для освобождения памяти и
предотвращения утечек ресурсов в проекте.
Пример удаления ассета:
var texture = app.assets.find('textureName');
if (texture) {
app.assets.remove(texture);
}
Если ассет был удален, он больше не будет доступен для использования
в проекте, и доступ к нему через метод find() вернет
null. Важно учитывать, что удаление ассета не приведет к
его удалению с сервера или из файловой системы; оно лишь убирает ссылку
на объект в реестре PlayCanvas.
Если необходимо удалить ассеты, загруженные с определенного URL, это
можно сделать с помощью метода removeByUrl(). Это удобно,
когда необходимо управлять ресурсами, загружаемыми динамически.
Пример:
app.assets.removeByUrl('assets/texture.jpg');
Этот метод удаляет все ассеты, которые были загружены с указанного URL, и освобождает их ресурсы.
Когда ассет зарегистрирован в реестре, его можно загружать и использовать асинхронно. PlayCanvas автоматически управляет процессом загрузки, и ассеты загружаются только тогда, когда это необходимо.
Для того чтобы загрузить ассет, можно использовать метод
load(), который загружает ассет и вызывает коллбек по
завершению загрузки.
Пример загрузки ассета с коллбеком:
app.assets.load(texture, function() {
console.log('Текстура загружена');
});
Если ассет уже был загружен ранее, он сразу будет доступен без необходимости повторной загрузки.
PlayCanvas автоматически кеширует ассеты, чтобы при повторном использовании одного и того же ресурса не загружать его заново. Это повышает производительность, особенно при работе с большими проектами, где множество ассетов используется многократно.
Когда ассет загружен в память, он остается в кешированной версии до тех пор, пока не будет удален из реестра или проект не будет перезагружен. Это гарантирует, что повторное обращение к ассету не приведет к дополнительной нагрузке на сервер или задержкам в процессе.
При работе с большими проектами важно правильно управлять количеством ассетов, чтобы избежать излишней загрузки памяти. Некоторые ассеты могут быть удалены из реестра, если они больше не нужны, а другие можно загрузить динамически в процессе работы приложения.
В случае, если проект имеет большое количество ресурсов, полезно следить за использованием памяти и правильно управлять загрузкой/удалением ассетов. PlayCanvas предоставляет ряд методов и инструментов для отслеживания состояния ассетов, включая их размеры и время загрузки.
PlayCanvas предоставляет методы для отслеживания состояния загрузки
ассетов. С помощью loadFromUrl() можно указать прогресс
загрузки и выполнить действия на каждом этапе.
Пример отслеживания прогресса загрузки:
app.assets.load(texture);
texture.on('load', function () {
console.log('Текстура загружена');
});
texture.on('error', function () {
console.log('Ошибка загрузки текстуры');
});
Этот подход позволяет более гибко управлять процессом загрузки и предоставлять пользователю информацию о текущем прогрессе, например, в виде индикатора загрузки.
AssetRegistry в PlayCanvas — это мощный инструмент для
работы с ассетами в реальном времени. С помощью этого класса можно
эффективно управлять ресурсами, оптимизировать процесс их загрузки и
удаления, а также обеспечить стабильную работу приложения при большом
количестве используемых ассетов.