Методы поиска: findByName, findByTag,
findByGuid
В PlayCanvas для работы с сущностями сцены предусмотрены методы,
позволяющие эффективно находить объекты по различным признакам.
Использование этих методов позволяет значительно ускорить процесс
разработки, обеспечивая быстрый доступ к компонентам и сущностям в
проекте. Три ключевых метода поиска в PlayCanvas — это
findByName, findByTag, и
findByGuid. Каждый из них выполняет свою специфическую
задачу и может быть полезен в различных сценариях.
Метод findByName используется для поиска сущностей по их
имени. Это один из самых распространённых способов поиска объектов на
сцене. В PlayCanvas каждую сущность можно назвать при её создании, и
этот метод позволяет найти все сущности, соответствующие заданному
имени.
Синтаксис:
var entity = this.app.root.findByName(name);
Entity или
null, если сущность с таким именем не найдена.Особенности и применение:
findByName в комбинации с методами
find или filter:var entities = this.app.root.findByName('MyEntity');
entities.forEach(function(entity) {
// Работа с сущностью
});
Пример использования: поиск объекта с именем “player” для выполнения определённых действий (например, изменения позиции).
var player = this.app.root.findByName('player');
if (player) {
player.setPosition(0, 10, 0); // Установка новой позиции
}
findByTagМетод findByTag применяется для поиска сущностей по
тегам, которые назначаются объектам на сцене. Теги являются полезным
инструментом для группировки сущностей и позволяют избежать избыточных
именований. В отличие от поиска по имени, который может быть менее
гибким, теги позволяют работать с группами объектов, независимо от их
конкретных названий.
Синтаксис:
var entities = this.app.root.findByTag(tag);
Entity,
соответствующих тегу. Если сущности с таким тегом нет, возвращается
пустой массив.Особенности и применение:
Пример использования: поиск всех врагов на сцене для применения эффекта урона.
var enemies = this.app.root.findByTag('enemy');
enemies.forEach(function(enemy) {
enemy.damage(10); // Применение урона ко всем врагам
});
Дополнительно, можно использовать метод tags сущности
для добавления или удаления тегов:
player.tags.add('player'); // Добавление тега
player.tags.remove('player'); // Удаление тега
findByGuidМетод findByGuid позволяет находить сущности по их
уникальному идентификатору GUID (Global Unique Identifier). Этот метод
полезен, когда необходимо точно идентифицировать объект на сцене, даже
если у него одинаковое имя или теги.
Синтаксис:
var entity = this.app.root.findByGuid(guid);
Entity или
null, если сущность с таким идентификатором не
найдена.Особенности и применение:
Пример использования: поиск сущности по GUID для выполнения определённых действий (например, изменения состояния).
var playerGuid = 'd41d8cd98f00b204e9800998ecf8427e';
var player = this.app.root.findByGuid(playerGuid);
if (player) {
player.setPosition(0, 10, 0); // Установка новой позиции для игрока
}
| Метод | Преимущества | Ограничения |
|---|---|---|
findByName |
Лёгкость в использовании, удобен для поиска объектов по имени. | Неэффективен при наличии множества объектов с одинаковым именем. |
findByTag |
Подходит для поиска объектов по категориям и группам. | Требует предварительной работы с тегами. |
findByGuid |
Позволяет точно идентифицировать объект с уникальным идентификатором. | Требует знания GUID заранее. |
Методы findByName, findByTag и
findByGuid являются основными инструментами для поиска
объектов в PlayCanvas, каждый из которых подходит для определённых
случаев в зависимости от требований проекта. Выбор метода зависит от
того, нужно ли искать объекты по имени, тегам или уникальному
идентификатору.