以与 Unity 相同的方式将 C++ 脚本添加到 Unreal 中的对象?

Adding C++ script to objects in Unreal in the same way as Unity?

我在场景中创建了一个 SkeletalMesh 对象,并在编辑器中添加了一个 C++ 组件,但是一旦我将它附加到 SkeletalMesh 上,我就无法在 Unreal 面板中找到它的位置。我知道它在工作,因为在我将脚本附加到对象后,它会打印一些简单的调试输出。

我想知道在哪里可以找到我的脚本组件的主要原因是因为我希望能够引用通过 C++ 附加脚本的骨架网格物体,就像在 Unity 中使用 C# 一样。

有没有一种方法可以引用我的 C++ 脚本附加到的对象并通过 C++ 访问骨架网格物体值?

我的代码现在只是一个 shell,但在这里我评论了我想要创建对骨架网格物体的引用的地方以及我想要为其设置动画的地方:

#include "Glove.h"


// Sets default values for this component's properties
UGlove::UGlove()
{
    PrimaryComponentTick.bCanEverTick = true;
}


// Called when the game starts
void UGlove::BeginPlay()
{
    Super::BeginPlay();
    // GET SKELETALMESH VALUE HERE SOMEHOW
}


// Called every frame
void UGlove::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
    Super::TickComponent(DeltaTime, TickType, ThisTickFunction);

    // ANIMATE SKELETALMESH HERE SOMEHOW
}

要将 SkeltaMesh 引用到您的脚本,当您附加一个脚本时,无法像统一一样完成它,但是有一种解决方法。

  1. Select 场景中的 SkeltaMesh
  2. 转到详细信息面板并添加您的 C++ 组件。
  3. 检查你的细节面板,了解你的脚本在树中的位置以及谁是它的父级,如果 sketalmesh 直接是它的父级,这就太简单了,你只需要获取父级组件或演员并投射到它,那么 return value 就是你在转换成功时要找的东西
  4. 在这个例子中,我为静态网格物体做了。

但是您必须在脚本 public 中创建变量并在蓝图中进行编辑才能在 运行 时间设置它们。

我有同样的问题,但只有蓝图。

要从 blueprint 中的 c++ 访问您的变量,您有两种方法

UFUNCTION(BlueprintCallable) void SetStaticMesh(your input variable type); 然后你在你的主蓝图中调用这个函数来分配静态网格或skeltaMesh,或者你想要的任何类型。

其他方式,您可以在声明变量之前放置 UPROPERTY(BlueprintReadWrite),然后您应该能够直接在蓝图上设置它。

这应该在另一个线程中,但我暂时保留答案。

Creating Variables in C++ For Use In BP