【问题标题】:Adding C++ script to objects in Unreal in the same way as Unity?以与 Unity 相同的方式将 C++ 脚本添加到 Unreal 中的对象?
【发布时间】:2019-03-28 07:43:10
【问题描述】:

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

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

有没有办法可以引用我的 C++ 脚本附加到的对象并通过 C++ 访问 SkeletalMesh 值?

我的代码现在只是一个外壳,但在这里我注释了我想要创建对 SkeletalMesh 的引用以及我想要为其设置动画的位置:

#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
}

【问题讨论】:

    标签: c++ unity3d unreal-engine4


    【解决方案1】:

    要将 SkeltaMesh 引用到您的脚本,当您附加脚本时,没有办法像统一一样做到这一点,但是有办法解决。

    1. 在场景中选择您的 SkeltaMesh
    2. 转到详细信息面板并添加您的 c++ 组件。
    3. 检查您的详细信息面板以了解您的脚本在树中的位置以及谁是它的父级,如果 sketalmesh 直接是它的父级,这将太容易了,您只需要获取父组件或演员并投射到它, 那么如果转换成功,返回值就是你要寻找的东西
    4. 在此示例中,我为静态网格做了。

    但是您必须将脚本中的变量公开并可在蓝图中进行编辑,以便能够在运行时设置它们。

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

    【讨论】:

    • 或者您甚至可以以相反的方式执行此操作,例如从直接父组件访问 c++ 组件,在这种情况下是您的骨架网格,只需将您的骨架直接分配给您在运行时查看的组件
    • 你能告诉我在 C++ 中需要做什么才能分配网格吗?
    • 根据我的上一条评论 - 转到您当前设置网格的蓝图。 - 从您的 C++ 组件中调用“Set X”,其中 X 是网格变量的名称。 - 然后只需将您的网格插入它。在活动开始时完成所有这些,一点也不难。
    • 我的意思是我是 Unreal 的新手,所以我不确定如何在 c++ 中将变量公开给蓝图。
    • 我添加了另一个答案,但请下次用您的问题创建新线程
    【解决方案2】:

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

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

    另外,你可以把 UPROPERTY(BlueprintReadWrite) 放在声明你的变量之前,然后你应该可以直接在 blueprint 中设置它。

    这应该在另一个线程中,但我现在将答案保留在这里。

    Creating Variables in C++ For Use In BP

    【讨论】:

    • 谢谢,我只是想知道关于虚幻的另一件事。一旦我设置了这个静态网格变量,我如何在 C++ 中访问静态网格的组件,如变换(位置和旋转)和骨架组件(骨骼)。
    • 你必须阅读 API 并理解它,这就是你想要的函数 YourComponenet->GetComponentLocation() ,类似的东西。虚幻引擎是c++ api 不好学很快,而且用google很多,这些都是常见问题,已经回答过很多次了
    • 谢谢,我发现我需要添加一个头文件才能查看 API,但现在我走对了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2019-01-27
    相关资源
    最近更新 更多