新建一个Plugin 选择蓝图库模板(最好都以插件形式)
然后得到这样的目录(命令用到其他模块记得去.Build.cs里加载,不然会编译错误)
然后在TestPythonBPLibrary.h里写上一个静态函数
static void PrintStringTest(FString MyString);
再加个UFUNCTION()(让UE4反射系统识别C ++函数,实际是暴露给蓝图,但是暴露给蓝图等于开放给了Python)
UFUNCTION(BlueprintCallable)
static void PrintStringTest(FString MyString);
在Cpp里写实现
void UTestPythonBPLibrary::PrintStringTest(FString MyString)
{
if (GEngine)
{
GEngine->AddOnScreenDebugMessage(-1, 10.f, FColor::Red, MyString);
}
}
然后生成,调试项目
import unreal
unreal.TestPythonBPLibrary.print_string_test("萌新小强")
成功,这样就能写一些,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.
}