Вот есть ActorGuid но он как я понял работает только в режиме development.
Есть GetUniqueID но он обновляется при каждом запуске игры.
Нужен какой нибудь идентификатор в виде string или int который бы всегда соответствовал этому актору, чтобы не добавлять каждый раз ему tag или что то еще для его уникальности.
Нету, но никто не мешает вам его добавить.
inc_ani
Ну не хочется именно вручную прописывать их каждый раз.
А есть событие которое возникает 1 раз при первом добавлении актора на уровень из editor?
Чтобы там 1 раз сформировать уникальный id и этот id навсегда останется тем же самым пока актор не будет удален со сцены?
Нету, но никто не мешает вам его добавить.
Сгенерируйте айди в конструкторе.
А вообще лучше подумать, зачем вам для актеров айди.
Ну скажем нужно на уровень раскидать 30 лечилок и хотелось бы их просто перенести на сцену как актера и больше ничего нигде не прописывать вручную. Тогда имея уникальный id актора можно фиксировать была ли лечилка подобрана в процессе игры.
То есть сейчас логика какая:
1. Переношу актера на сцену
2. Прописываю у него uniqID строку вручную
Хотелось бы:
1. Переношу актера на сцену, uniqID создается автоматически и не меняется никогда.
Может от обратного стоит идти через блупринт интерфейс тот же? Подобранная лечилка сама сообщает тебе, что она была подобрана.
Бери за айди вектор их положения в мире. Или напиши простую формулу по преобразованию вектора в айди. А вобще надуманная какая-то проблема. Стоит всеголишь одну переменную прописать, к чему мучаться то изобретая что-то
А почему каждая аптечка сама не может запомнить свое состояние?
Усложнять архитектуру с айди имеет смысл если вы дейстительно делаете разделение модели данных и преставление, и у вас есть какая-то база данных.
Генерируй GUID
В конструкторе и в PostEditImport()
void AActorExtended::PostEditImport() <-- Ивент при дублирование актора в сцене Super::PostEditImport( ); FGuid local = FGuid::NewGuid( ); GUID = this->GetClass( )->GetName( ).Append( local.ToString( )); }
Тема в архиве.