Я пытаюсь выяснить, можно ли сбросить указатель актера и одновременно не заставить его исчезнуть из мира.
Пример:
1. auto Item = GetWorld()->SpawnActor<...>(...);
2. …
3. Item = nullptr;
— сбросить только указатель
4. Актер все еще в мире
Я считаю, что дублирование этого актера будет работать, но это не должно быть лучшим решением IMO.
Вы, кажется, работаете с предположением, что очистка указателя будет автоматически уничтожить актера. Вы убедились, что это действительно так?
Глядя на документы, SpawnActor
просто возвращает обычный «тупой» указатель. В C ++ сброс простого указателя на null
не разрушает объект, на который он ссылается; возможно, необходимо какое-то явное действие, чтобы уничтожить его. Статья UE4 о Актер Жизненный цикл кажется, поддерживает это также.
Это может принять форму сброса умный указатель (TSharedPtr
) или звонит Destroy
на самого актера.
Других решений пока нет …