Size: a a a

2019 July 18

VB

Vladimir Baranov in Unreal Engine
Нет, не позволит
источник

AS

Alexander Shumeyko in Unreal Engine
У sharedPtr свой счетчик ссылок у анриловского gc свой
источник

VB

Vladimir Baranov in Unreal Engine
если нужно хранить UObject вне uproperty то FGCObject весь ваш
источник

AS

Alexander Shumeyko in Unreal Engine
Alexander Belekhow
если я все правильно понимаю, то GC при любом раскладе уничтожит  UObject* без UPOPERTY , TSharedPtr же позволит избежать удаления, т.к. это соответственно смарт птр
https://wiki.unrealengine.com/Garbage_Collection_%26_Dynamic_Memory_Allocation
You can also prevent an object from being garbage collected by setting the RF_RootSet flag.

YourObjectInstance->AddToRoot();
источник

VB

Vladimir Baranov in Unreal Engine
ну тоже вариант, но зачем
источник

AB

Alexander Belekhow in Unreal Engine
Alexander Shumeyko
https://wiki.unrealengine.com/Garbage_Collection_%26_Dynamic_Memory_Allocation
You can also prevent an object from being garbage collected by setting the RF_RootSet flag.

YourObjectInstance->AddToRoot();
вот я и искал что-то подобное, надеюсь заработает. проблема была в статик доступе к объекту, у которого по сути контейнера нет
источник

VB

Vladimir Baranov in Unreal Engine
если совсем совсем нет контейнера то да, AddToRoot
источник

VB

Vladimir Baranov in Unreal Engine
только потом удалить не забывайте )))
источник

VB

Vladimir Baranov in Unreal Engine
а если есть какой-нибудь подходящий FClass то от FGCObject его унаследовать и в CollectReferences добавлять тот хранящийся UObject
источник

VB

Vladimir Baranov in Unreal Engine
будет работать как UProperty в плане сборки мусора (и даже вроде null выставит при гибели ассета)
источник

AB

Alexander Belekhow in Unreal Engine
спасибо большое
источник

AB

Alexander Belekhow in Unreal Engine
Vladimir Baranov
только потом удалить не забывайте )))
это плагин и я хочу чтобы обж существовал весь жизненный цикл, нужно ли мне как-то удалять вручную кроме как по выгрузке плагина?
источник

AS

Alexander Shumeyko in Unreal Engine
Alexander Belekhow
это плагин и я хочу чтобы обж существовал весь жизненный цикл, нужно ли мне как-то удалять вручную кроме как по выгрузке плагина?
Будет достаточно вызвать RemoveFromRoot при выгрузке плагина
источник

AB

Alexander Belekhow in Unreal Engine
Alexander Shumeyko
Будет достаточно вызвать RemoveFromRoot при выгрузке плагина
спасибо.

только линкер ругается на  
static UWrapper* ObjRef;
источник

AS

Alexander Shumeyko in Unreal Engine
По идее еще можно вызвать ConditionalBeginDestroy для мгновенного освобождения памяти
источник

AS

Alexander Shumeyko in Unreal Engine
Alexander Belekhow
спасибо.

только линкер ругается на  
static UWrapper* ObjRef;
А он знает о UWrapper? Он подключен в include или объявен через forward declaration?
источник

AB

Alexander Belekhow in Unreal Engine
Alexander Shumeyko
А он знает о UWrapper? Он подключен в include или объявен через forward declaration?
он сам UWrapper
источник

СВ

Сэр Гусь Важный... in Unreal Engine
Alexander Shumeyko
А он знает о UWrapper? Он подключен в include или объявен через forward declaration?
он жалуется что его нету
источник

СВ

Сэр Гусь Важный... in Unreal Engine
потому-что в цэпэпэ нету
источник

AS

Alexander Shumeyko in Unreal Engine
Кстати да
источник