2301_80635053 2024-08-24 19:27 采纳率: 0%
浏览 55
已结题

怎么将普通C++转入UE5

有一个解析obj文件模型并获得数据的C++文件,如何将其转化为ue5的C++并且能拿到某个模型的数据

  • 写回答

19条回答 默认 最新

  • 阿里嘎多学长 2024-08-24 19:28
    关注

    AIGC生成:


    🤔

    UE5 提供了一个名为 UnrealBuildTool 的工具,可以将 C++ 代码集成到 UE5 项目中。下面是一个将普通 C++ 代码转换为 UE5 C++ 代码的步骤:

    1. 创建一个新的 UE5 项目,选择 "Third-Party" 项目类型。
    2. 在项目目录下创建一个名为 MyPlugin 的文件夹,并在其中创建一个名为 MyPlugin.cpp 的文件。
    3. 将你的 C++ 代码复制到 MyPlugin.cpp 文件中。
    4. MyPlugin.cpp 文件中,添加以下代码以便将 C++ 代码集成到 UE5 项目中:
    #include "MyPlugin.h"
    #include "MyPlugin.generated.h"
    
    UCLASS()
    class MYPLUGIN_API AMyPlugin : public AActor
    {
        GENERATED_BODY()
    };
    
    void AMyPlugin::BeginPlay()
    {
        Super::BeginPlay();
    
        // 在这里调用你的 C++ 代码
        // 例如:
        MyFunction();
    }
    
    void AMyPlugin::MyFunction()
    {
        // 你的 C++ 代码
        // 例如:
        // 读取 obj 文件
        FFileHelper::LoadFileToArray(MyArray, "path/to/obj/file.obj");
        // 处理数据
        for (int i = 0; i < MyArray.Num(); i++)
        {
            // 处理每个数据
        }
    }
    
    1. MyPlugin.h 文件中添加以下代码以便定义 AMyPlugin 类:
    #pragma once
    
    #include "CoreMinimal.h"
    #include "GameFramework/Actor.h"
    #include "MyPlugin.generated.h"
    
    class MYPLUGIN_API AMyPlugin : public AActor
    {
        GENERATED_BODY()
    };
    
    1. MyPlugin.Build.cs 文件中添加以下代码以便将 C++ 代码编译到 UE5 项目中:
    using UnrealBuildTool;
    
    public class MyPlugin : ModuleRules
    {
        public MyPlugin(TargetInfo Target)
        {
            PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
    
            PrivateDependencyModuleNames.AddRange(new string[] { "MyPlugin" });
    
            PublicIncludePaths.Add(ModuleDirectory);
        }
    }
    
    1. 在 UE5 项目中,创建一个新的 Actor,并将 AMyPlugin 类设置为 Actor 的类。
    2. 在 Actor 中,调用 AMyPlugin 类的 BeginPlay 函数以便执行 C++ 代码。

    示例代码:

    // MyPlugin.cpp
    #include "MyPlugin.h"
    #include "MyPlugin.generated.h"
    
    UCLASS()
    class MYPLUGIN_API AMyPlugin : public AActor
    {
        GENERATED_BODY()
    };
    
    void AMyPlugin::BeginPlay()
    {
        Super::BeginPlay();
    
        MyFunction();
    }
    
    void AMyPlugin::MyFunction()
    {
        FFileHelper::LoadFileToArray(MyArray, "path/to/obj/file.obj");
        for (int i = 0; i < MyArray.Num(); i++)
        {
            // 处理每个数据
        }
    }
    
    // MyPlugin.h
    #pragma once
    
    #include "CoreMinimal.h"
    #include "GameFramework/Actor.h"
    #include "MyPlugin.generated.h"
    
    class MYPLUGIN_API AMyPlugin : public AActor
    {
        GENERATED_BODY()
    };
    
    // MyPlugin.Build.cs
    using UnrealBuildTool;
    
    public class MyPlugin : ModuleRules
    {
        public MyPlugin(TargetInfo Target)
        {
            PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" });
    
            PrivateDependencyModuleNames.AddRange(new string[] { "MyPlugin" });
    
            PublicIncludePaths.Add(ModuleDirectory);
        }
    }
    

    注意:在上面的代码中,MyArray 是一个 FString 类型的数组,用于存储 obj 文件中的数据。MyFunction 是一个函数,用于处理 obj 文件中的数据。在实际实现中,你需要根据你的 C++ 代码修改这些变量和函数。

    希望这个示例能够帮助你将普通 C++ 代码转换为 UE5 C++ 代码!

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月30日
  • 创建了问题 8月24日