c++ - 在UE4中,为什么要重写BeginPlay,为什么要在重写的BeginPlay中调用Super::BeginPlay?

标签 c++ overriding abstract unreal-engine4

我用 unity 制作了一些游戏,但我是 UE4 的新手,但我了解 C++。为什么我们不能像在 unity 的 start 和 update 中那样在不覆盖的情况下在 Tick 和 BeginPlay 函数中编写功能?这些函数调用行为是由ue4的行为树控制的,那么为什么我们需要在覆盖的tick函数中调用基类函数(Super::Tick)?

最佳答案

BeginPlay 和Tick 是继承方法。 Override 是一个 C++ 指令,它要求编译器确保您的方法签名与继承的签名匹配。 Super 只是指继承的类。当您调用 Super::Tick 时,您是在说您希望覆盖方法执行与继承方法相同的操作,然后,您希望执行您添加的任何附加功能。

您可以在不调用 Super 类的情况下调用这些函数,但这样您将无法使用任何基本功能。

关于c++ - 在UE4中,为什么要重写BeginPlay,为什么要在重写的BeginPlay中调用Super::BeginPlay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49063858/

相关文章:

c++ - 错误 : incompatible types in assignment of 'char*' to 'char [4000]'

c++ - 如何添加此代码以使用我的 arduino 打印一个完整的三角形?

c++ - 为什么在编译时选择这个虚方法的实现?

java - 覆盖与隐藏 Java - 困惑

c# - C#中虚方法的问题

java - 抽象类及其子类

c++ - C++ 继承与多态

c++ - 从 C++ 中的函数返回指向数组的指针?

java - 模式访问者 : Abstract class needs a function

java - 从 Java 8 开始,抽象类还有哪些用例?