2017-02-21 60 views
-7

所以我期待在虚幻文档浏览: https://docs.unrealengine.com/latest/INT/Programming/QuickStart/3/index.html为什么.h文件中的.cpp文件中的所有变量都不是?

在第二步,他们在.h文件中创建一个浮动RunningTime和步骤3中cpp文件,我的理解使用它。我不明白的是在cpp文件中,他们创建了FVector NewLocationfloat DeltaHeight,但他们没有将这些添加到.h。

为什么在.h和其余的运行时间不是? .h文件中的数据有什么特别之处?

感谢

编辑:

我理解的范围方面。我不明确的道歉。我的困惑是RunningTime没有被设置在任何地方。它被用在cpp中,在Tick函数中,但值是...什么?我在虚幻引擎中运行了它,它可以工作,但(theValueOf)RunningTime是什么?

+0

如果我正确解释该指南,他们需要'RunningTime'在对函数的调用之间保持不变,以便它们添加一个全局变量。他们不需要'NewLocation'来在两次调用之间保持联系,因此他们添加了一个局部变量。 –

回答

0

您指出本教程的目的是创建类AFloatingActor,然后可以实例化该类。所述RunningTime变量是类的接口的一部分,并且由于它被定义为公共

public: 
    float RunningTime; 

它可以在类外部访问(看公共/私有类成员和方法)。

与此相反,FVector NewLocationfloat DeltaHeight是仅在方法AFloatingActor::Tick中使用的局部变量。因为它们只用于这个成员(函数),而不用在类中任何地方,它们既不是类接口的一部分,也不需要它们是类变量。

如果它们在.h文件中(因此是一个类变量),那么当类被实例化时它们将被创建,并且只要该类是保持活动状态。但是没有必要这样做,因此它们在调用AFloatingActor::Tick时创建,它们完成它们的部分,然后被销毁,因为它们是该方法的局部变量。

这也是第二个问题“关于.h文件中的数据有什么特别之处?”的答案。

总结一下: 在你编写类接口的类的.h文件中。它包括

  • 公共变量/方法:这是变量/是在类的外部访问
  • 私有变量/方法这个类的方法:这个变量/方法只有在这个课堂上使用,他们可以不能从外部访问,并与这个类的所有方法都共享
  • 保护的变量/方法:看例如这里SO: private vs. protected variables

类实现写一个类的.cpp文件(执行每种方法)。

欲了解更多信息,查看示例here

+0

我了解范围方面。我不明确的道歉。我的困惑是RunningTime没有被设置在任何地方。它被用在cpp中,在Tick函数中,但值是...什么?我在虚幻引擎中运行了它,它可以工作,但(theValueOf)RunningTime是什么? –

+0

对不起,我的理解完全不同。但是你的问题的答案在我的回答中是“隐藏的”。由于RunningTime是公共成员(因此可以从类外部设置),因此可能(不确定,因为我只看到类定义)在使用此类的代码中设置。可能在一个循环中,并且在每次迭代中它的值可能会改变。可能是因为我不知道它是如何被使用的,但是这样做是合乎逻辑的。但它需要在初始化类时设置,因为类成员的默认值是未定义的,你肯定不想... – maetulj

+0

多数民众赞成在我后来的想法。 RunningTime由另一个类设置,然后在此Tick类中使用。而它被使用的方式意味着命名必须是特定的,以便其他类可以找到并使用它。所以,作为一个测试,我尝试将RunningTime重命名为BlaBloopTime,并且...程序仍然正确运行。所以,我仍然对它的工作方式感到困惑。可能是文档中的错误?我的结论是RunningTime的价值并不重要。今晚我会尝试去除它出现的RunningTime,然后看看锥体是否还会抖动。谢谢 –

相关问题