UE4C++扩展Python

新建一个Plugin 选择蓝图库模板(最好都以插件形式)

image.png

然后得到这样的目录(命令用到其他模块记得去.Build.cs里加载,不然会编译错误)

image.png

image.png

然后在TestPythonBPLibrary.h里写上一个静态函数

static void PrintStringTest(FString MyString);

再加个UFUNCTION()(让UE4反射系统识别C ++函数,实际是暴露给蓝图,但是暴露给蓝图等于开放给了Python)

UFUNCTION(BlueprintCallable)
    static void PrintStringTest(FString MyString);
image.png

在Cpp里写实现

void UTestPythonBPLibrary::PrintStringTest(FString MyString)
{
    if (GEngine)
    {
        GEngine->AddOnScreenDebugMessage(-1, 10.f, FColor::Red, MyString);
    }
}
image.png

然后生成,调试项目

import unreal
unreal.TestPythonBPLibrary.print_string_test("萌新小强")
image.png
image.png

成功,这样就能写一些,Python操作不了的功能了

新建其他类的时候都是大同小异,继承至UBlueprintFunctionLibrary
在头上添加UCLASS的标识,类名要以U开头

UCLASS()
class UTestPythonBPLibrary : public UBlueprintFunctionLibrary
{
    GENERATED_UCLASS_BODY()

这两个函数看注释就能明白

void FTestPythonModule::StartupModule()
{
    // This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
    
}

void FTestPythonModule::ShutdownModule()
{
    // This function may be called during shutdown to clean up your module.  For modules that support dynamic reloading,
    // we call this function before unloading the module.
    
}

你可能感兴趣的:(UE4C++扩展Python)