Size: a a a

2019 July 16

A

Alexey Taranov in Unreal Engine
Sasha Kailov
Ребят подскажите, unreal с юдимами работать не умеет же?
if u<1 и погнали...
источник

A

Alexey Taranov in Unreal Engine
вообще проще по материалам разбить и нормально будет(ну иначе никак вообще)
источник

SK

Sasha Kailov in Unreal Engine
Alexey Taranov
вообще проще по материалам разбить и нормально будет(ну иначе никак вообще)
Спасибо!)
источник

AS

Alexey Sarapulov in Unreal Engine
У меня есть кастомный класс, внутри которого я подгружаю материал из ассетов и создаю из него UMaterialInstanceDynamic.
Для материала и динамического инстанса в этом классе есть поля:
UMaterialInterface* MaterialAsset = nullptr;
UMaterialInstanceDynamic* DynamicMaterial = nullptr;
Через некоторое время, когда вызывается один из методов этого класса, который использует DynamicMaterial, возникает эксепшен: в переменной лежит какой-то мусор. Проверил MaterialAsset - там тоже непонятно, что.
Проверяю данные до вызова этого метода: в обоих переменных лежат осмысленные объекты.
И этот эксепшен возникает не всегда, даже скорее чаще не возникает, чем возникает. Такое ощущение, что сборщик мусора проходит по моим данным и удаляет их. Но ведь он не должен лезть в кастомные классы?
источник

AS

Alexander Shumeyko in Unreal Engine
Alexey Sarapulov
У меня есть кастомный класс, внутри которого я подгружаю материал из ассетов и создаю из него UMaterialInstanceDynamic.
Для материала и динамического инстанса в этом классе есть поля:
UMaterialInterface* MaterialAsset = nullptr;
UMaterialInstanceDynamic* DynamicMaterial = nullptr;
Через некоторое время, когда вызывается один из методов этого класса, который использует DynamicMaterial, возникает эксепшен: в переменной лежит какой-то мусор. Проверил MaterialAsset - там тоже непонятно, что.
Проверяю данные до вызова этого метода: в обоих переменных лежат осмысленные объекты.
И этот эксепшен возникает не всегда, даже скорее чаще не возникает, чем возникает. Такое ощущение, что сборщик мусора проходит по моим данным и удаляет их. Но ведь он не должен лезть в кастомные классы?
Подпиши его как UProperty
источник

AS

Alexander Shumeyko in Unreal Engine
Или в коде вызови AddToRoot
источник

СВ

Сэр Гусь Важный... in Unreal Engine
Alexander Shumeyko
Или в коде вызови AddToRoot
Зачем ты это
источник

AS

Alexander Shumeyko in Unreal Engine
Сэр Гусь Важный
Зачем ты это
источник

AS

Alexey Sarapulov in Unreal Engine
Alexander Shumeyko
Подпиши его как UProperty
У меня вот кастомный класс, не от UObject, разве этот макрос будет работать?
источник

AS

Alexey Sarapulov in Unreal Engine
Alexander Shumeyko
Или в коде вызови AddToRoot
AddToRoot кажется помогло
источник

AS

Alexey Sarapulov in Unreal Engine
Что не так с AddToRoot()? Гугл не пишет, что это плохо
источник

AS

Alexander Shumeyko in Unreal Engine
Не слушай гуся, он вредный😂
источник

MC

Mikhail Chernykh in Unreal Engine
FORCEINLINE void RemoveFromRoot()
источник

AR

Alexey Rodionov in Unreal Engine
Alexey Sarapulov
Что не так с AddToRoot()? Гугл не пишет, что это плохо
Очень аккуратно надо. RemoveFromRoot надо не забыть. А то утечки памяти будут. Но вообще этим ты по сути ломаешь автоматическую сборку мусора, возвращаешься к ручному управлению. Правильно будет пометить поле UProperty, если класс Uobject насоедован или наследовать класс от FGCObject и в AddReference-как-то-так добавлять свой созданный объект
источник

SY

Selivanov Yevhenii in Unreal Engine
Alexey Rodionov
Очень аккуратно надо. RemoveFromRoot надо не забыть. А то утечки памяти будут. Но вообще этим ты по сути ломаешь автоматическую сборку мусора, возвращаешься к ручному управлению. Правильно будет пометить поле UProperty, если класс Uobject насоедован или наследовать класс от FGCObject и в AddReference-как-то-так добавлять свой созданный объект
Так это, есть же умные указатели
источник

SY

Selivanov Yevhenii in Unreal Engine
Для не uobject классов
источник

AR

Alexey Rodionov in Unreal Engine
Проблема как я понял с материалом, который как раз UObject
источник

AS

Alexander Shumeyko in Unreal Engine
Alexey Rodionov
Очень аккуратно надо. RemoveFromRoot надо не забыть. А то утечки памяти будут. Но вообще этим ты по сути ломаешь автоматическую сборку мусора, возвращаешься к ручному управлению. Правильно будет пометить поле UProperty, если класс Uobject насоедован или наследовать класс от FGCObject и в AddReference-как-то-так добавлять свой созданный объект
Пора писать свой sharedPtr с кастомным делитером, который будет вызывать RemoveFromRoot😁
источник

PL

Peter Leontev in Unreal Engine
Alexander Shumeyko
Пора писать свой sharedPtr с кастомным делитером, который будет вызывать RemoveFromRoot😁
астанавись
источник

AS

Alexander Shumeyko in Unreal Engine
Peter Leontev
астанавись
источник