0

我目前正在 Unreal Engine 4 中开发我的第一个类。由于广泛使用 UScript,我对纯 C++ 中的类型转换如何工作感到有些困惑。更具体地说,类/对象转换。

我目前正在 MyCustomGameMode 中组合一个 switch 语句,它为 MyCustomPlayerControllerVariable 调用 MyCustomPlayerController。

我要覆盖的有问题的功能是这个:virtual UClass* GetDefaultPawnClassForController(AController* InController);

目前我正在尝试使用以下代码行调用变量,我知道这是不正确的,但我不确定为什么:

Cast<MyCustomPlayerController>(InController).MyCustomPlayerControllerVariable

我有兴趣将“InController”投射到 MyCustomPlayerController 但Cast<MyCustomPlayerController>(InController)似乎不起作用,我在这里做错了什么?

4

2 回答 2

3

演员表将返回一个指向您的播放器控制器的指针,因此您需要使用 -> 来取消引用它。

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

`

于 2014-10-21T16:38:56.853 回答
3

当你转换时,它总是返回一个指针。因此,请确保在从指针访问变量之前检查转换是否成功。

auto MyPC = Cast<MyCustomPlayerController>(InController);
if(MyPC)
{
    MyPC->MyVariable;
}
于 2015-06-26T01:32:40.647 回答