Unreal EngineФорумОбщее

Есть ли уникальный идентификатор объекта actor?

#0
21:31, 17 июля 2023

Вот есть ActorGuid но он как я понял работает только в режиме development.
Есть GetUniqueID но он обновляется при каждом запуске игры.

Нужен какой нибудь идентификатор в виде string или int который бы всегда соответствовал этому актору, чтобы не добавлять каждый раз ему tag или что то еще для его уникальности.

#1
23:27, 17 июля 2023

Нету, но никто не мешает вам его добавить.

#2
7:44, 18 июля 2023

inc_ani
Ну не хочется именно вручную прописывать их каждый раз.
А есть событие которое возникает 1 раз при первом добавлении актора на уровень из editor?
Чтобы там 1 раз сформировать уникальный id и этот id навсегда останется тем же самым пока актор не будет удален со сцены?

#3
11:03, 18 июля 2023

Нету, но никто не мешает вам его добавить.

#4
11:05, 18 июля 2023

Сгенерируйте айди в конструкторе.

#5
12:50, 18 июля 2023

А вообще лучше подумать, зачем вам для актеров айди.

#6
22:29, 18 июля 2023

Ну скажем нужно на уровень раскидать 30 лечилок и хотелось бы их просто перенести на сцену как актера и больше ничего нигде не прописывать вручную. Тогда имея уникальный id актора можно фиксировать была ли лечилка подобрана в процессе игры.

То есть сейчас логика какая:
1. Переношу актера на сцену
2. Прописываю у него uniqID строку вручную

Хотелось бы:
1. Переношу актера на сцену, uniqID создается автоматически и не меняется никогда.

#7
22:52, 18 июля 2023

Может от обратного стоит идти через блупринт интерфейс тот же? Подобранная лечилка сама сообщает тебе, что она была подобрана.

#8
6:05, 19 июля 2023

Бери за айди вектор их положения в мире. Или напиши простую формулу по преобразованию вектора в айди. А вобще надуманная какая-то проблема. Стоит всеголишь одну переменную прописать, к чему мучаться то изобретая что-то

#9
21:59, 19 июля 2023

А почему каждая аптечка сама не может запомнить свое состояние?

Усложнять архитектуру с айди имеет смысл если вы дейстительно делаете разделение модели данных и преставление, и у вас есть какая-то база данных.

#10
23:10, 20 июля 2023

Генерируй GUID
В конструкторе и в PostEditImport()

void AActorExtended::PostEditImport() <-- Ивент при дублирование актора в сцене
  Super::PostEditImport();

  FGuid local = FGuid::NewGuid();
  GUID = this->GetClass()->GetName().Append(local.ToString());
}
Unreal EngineФорумОбщее

Тема в архиве.