в класс компонента
UPROPERTY(BlueprintReadOnly, VisibleAnywhere)
UNoiseMap* NoiseMap {};
В конструкторе компонента инициализирую его
NoiseMap = CreateDefaultSubobject<UNoiseMap>(TEXT("NoiseMap"));
check(NoiseMap != nullptr);
Смотрю в блюпринте актора с этим компонентом, свойство NoiseMap не валидно в BeginPlay.
Тип NoiseMap у меня унаследован от UObject, в UCLASS не забыл прописать BlueprintType.
Что за х..я? Что я не так делаю? Почему не валидный указатель?
create default subobject вроде только для компонентов, не? создай через newobject, только не в конструкторе, а на бегин плей или ещё где-нибудь
а ещё я хз что такое {} в объявлении, обычно пишут = nullptr
а зачем фигурные скобки здесь?
Ты масс энтити пощупал уже?
это по идее конструктор без параметров, обычно пишут NoiseMap{}
нет :( я вообще уже почти год нормально за анрил не садился
ну для юобджектов я б поостерёгся
List initialization, вполне валидная конструкция
это что-то из голых плюсов, страшно я б в анрил такое не тащил
Это не list initialization, это value initialization.
если пустой, то да, но не суть, спасибо что поправил
анриал написан на голых плюсах 😱 и вообще переписать бы его на расте!
А почему в бегин плей?
а оно нужно раньше?
На это забейте, это списковая инициализация, убрал ее вовсе
Ну я вообще думал, что в конструкторе иниц. объекты и свойства
Тут в дело вступает такая штука как CDO.
Капец, спасибо, пошел читать
Обсуждают сегодня