Unreal Engine 4 — Typecasting

В настоящее время я занимаюсь разработкой своих первых классов на Unreal Engine 4. Исходя из широкого использования UScript, меня немного смущает то, как работает приведение типов в чистом C ++. В частности, приведение классов / объектов.

В настоящее время я собираю инструкцию switch в MyCustomGameMode, которая вызывает MyCustomPlayerController для MyCustomPlayerControllerVariable.

Рассматриваемая функция, которую я переопределяю, такова: virtual UClass* GetDefaultPawnClassForController(AController* InController);

В настоящее время я пытаюсь вызвать переменную со следующей строкой кода, которая, как я знаю, неверна, но я не знаю почему:

Cast<MyCustomPlayerController>(InController).MyCustomPlayerControllerVariable

Я заинтересован в приведении «InController» к MyCustomPlayerController, но Cast<MyCustomPlayerController>(InController) не похоже на работу, что я тут делаю не так?

0

Решение

Приведение вернет указатель на ваш контроллер игрока, поэтому вам нужно будет использовать ->, чтобы разыменовать его.

const MyCustomPlayerController* MyController = Cast<MyCustomPlayerController>(InController);
check(MyCustomPlayerController);  // asserts that the cast succeeded
const float MyVariable = MyCustomPlayerController->ControllerVariable;

`

3

Другие решения

Когда вы разыгрываете, Он всегда возвращает указатель. Поэтому убедитесь, что проверка прошла успешно, прежде чем обращаться к переменным из указателя.

auto MyPC = Cast<MyCustomPlayerController>(InController);
if(MyPC)
{
MyPC->MyVariable;
}
3

По вопросам рекламы [email protected]