P
1) Я не понимаю, когда нужно использовать указатели, а когда переменные
Например почему с контейнерами (как пример с массивами), не используют указатель:
TArray<UMaterialInstance> Material;
а с суб-классами или компонентами используют (а иногда нет)?UMaterialInstance* Material;
UCharacterMovementComponent* CharMovement;
Или почему, например, иногда используют класс TSubclassOf:TSubclassOf<UDamageType> DamageType;
С ними поинтеры не используют.————————————————
2) Чем должны являться enum-ы в классе (поинтером или объектом)?
Объект который хранится по указателю может быть создан раньше или позже, уничтожен раньше или позже, это может быть полезно в некоторых ситуациях, но требует следить за тем чтобы не обратиться к объекту когда он ещё не создан, или уже уничтожен, не забыть его удалить вовремя (анрил последнее сильно упрощает тем что можно просто прописать ему UProperty).
Другое отличие в том где объект хранится в памяти.
Enum обычно хранят и передают по значению, так как это очень легковесный тип.
Я не анрилист, а плюсовик, так что в каких-то деталях могу ошибаться относительно анрила.
