【问题标题】:UE4 setting sprite by using C++UE4使用C++设置精灵
【发布时间】:2021-09-10 13:52:33
【问题描述】:

我不知道如何通过使用它的引用在actor类构造函数中设置一个精灵。 参考是“PaperSprite'/Game/cc/combat/units/archer_Sprite_0.archer_Sprite_0'”

我想让这个精灵静态化。我认为应该使用 ConstructorHelpers::FObjectFinder 。当我运行下面的代码时,我得到了这个错误:

sprite = CreateDefaultSubobject<UPaperSpriteComponent>(TEXT("Sprite_comp"));
sprite->SetupAttachment(RootComponent);

ConstructorHelpers::FObjectFinder<UPaperSprite> SpriteAssetObj(TEXT("PaperSprite'/Game/cc/combat/units/archer_Sprite_0.archer_Sprite_0'"));

//sprite->SetSprite(SpriteAssetObj.Object);

"严重性代码描述项目文件行抑制状态 错误 C2664 'void ConstructorHelpers::ValidateObject(UObject *,const FString &,const TCHAR *)': 无法将参数 1 从 'T *' 转换为 'UObject *' MyProject C:\Program Files\Epic Games\UE_4.26\引擎\源\运行时\CoreUObject\Public\UObject\ConstructorHelpers.h 110 "

任何帮助或建议都会很好。提前致谢。

【问题讨论】:

    标签: c++ unreal-engine4


    【解决方案1】:

    我想让这个精灵静态化。

    ConstructorHelpers::FObjectFinder 用于查找资产。

    如果发生移动将是:

    sprite->SetMobility(EComponentMobility::Type::Stationary);
    

    我测试了下面的代码没有任何问题。您确定是 ConstructorHelpers::FObjectFinder... 导致了错误吗?

    static ConstructorHelpers::FObjectFinder<UPaperSprite> SpriteAssetObj(TEXT("PaperSprite'/Game/TEMP/Sprites/SP_TempSprite_1.SP_TempSprite_1'"));
    if (SpriteAssetObj.Object)
    {
        UE_LOG(LogTemp, Warning, TEXT("PaperSprite loaded"));
    }
    else
    {
        UE_LOG(LogTemp, Warning, TEXT("PaperSprite not found"));
    }
    

    不要忘记将 Paper2D 模块添加到您的 YourGame.build.cs 文件中:

    PublicDependencyModuleNames.AddRange(new string[] { "Paper2D" });
    

    并添加到您的文件中:

    #include "PaperSprite.h"
    

    【讨论】:

    • 是的,它导致了我提到的错误。它不应该引发错误
    • 问题不包括“PaperSprite.h”。谢谢老兄。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    相关资源
    最近更新 更多