В настоящее время я занимаюсь разработкой своих первых классов на Unreal Engine 4. Исходя из широкого использования UScript, меня немного смущает то, как работает приведение типов в чистом C ++. В частности, приведение классов / объектов.
В настоящее время я собираю инструкцию switch в MyCustomGameMode, которая вызывает MyCustomPlayerController для MyCustomPlayerControllerVariable.
Рассматриваемая функция, которую я переопределяю, такова: virtual UClass* GetDefaultPawnClassForController(AController* InController);
В настоящее время я пытаюсь вызвать переменную со следующей строкой кода, которая, как я знаю, неверна, но я не знаю почему:
Cast<MyCustomPlayerController>(InController).MyCustomPlayerControllerVariable
Я заинтересован в приведении «InController» к MyCustomPlayerController, но Cast<MyCustomPlayerController>(InController)
не похоже на работу, что я тут делаю не так?
Приведение вернет указатель на ваш контроллер игрока, поэтому вам нужно будет использовать ->, чтобы разыменовать его.
const MyCustomPlayerController* MyController = Cast<MyCustomPlayerController>(InController);
check(MyCustomPlayerController); // asserts that the cast succeeded
const float MyVariable = MyCustomPlayerController->ControllerVariable;
`
Когда вы разыгрываете, Он всегда возвращает указатель. Поэтому убедитесь, что проверка прошла успешно, прежде чем обращаться к переменным из указателя.
auto MyPC = Cast<MyCustomPlayerController>(InController);
if(MyPC)
{
MyPC->MyVariable;
}