虚幻4 UE4 蓝图C++混合编程

虚幻4蓝图C++混合编程(蓝图函数库)

前言

学习虚幻4 C++编程过程中,参考官方中文文档可找到大部分解答。

虚幻4中使用蓝图进行逻辑设计更为直观,但是对于复杂的数据操作部分则无从下手,因此可以使用C++实现数据操作的底层逻辑。

无论当前工程处于什么状态,即使创建项目时选择的是基于蓝图,均可实现蓝图C++混合编程。

本文主要介绍在C++中提供函数接口,在蓝图中调用的方法。这种方法等价于C++中的静态成员函数。这种函数无需实例化对象即可直接在蓝图中像其他方法一样调用,可以省去繁琐的连线。本文开发环境为UE4.26+vs2019

创建C++蓝图函数库

蓝图函数库官方文档中这样介绍:

如果需要公开共享效用函数,则不需要将它们和一种特定的游戏性对象类型捆绑在一起。对于这类情况,我们使用 蓝图函数库

因此打开当前项目,点击文件->新建C++类,在弹出的窗口中找到蓝图函数库,点击下一步

在这里插入图片描述

输入类名,点击创建类。此时应已自动跳转至VS2019中。如果没有跳转,可在内容浏览器中找到

在这里插入图片描述

编辑头文件

在创建的.h头文件中,在类定义的大括号内添加函数声明

UCLASS()
class TESTSTRUCT_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, Category = "MyFuncLib")
		static int mytest(int a,int b);
};

public同C++,表明这是共有成员变量/函数

UFUNCTION为定义一个UE4函数,BlueprintCallable使蓝图可以读取此函数,Category为该函数的分类名,可根据喜好或分组自行修改,下文中可以看到该分类名出现在何处。

函数需用static声明。作为静态成员函数,其只可访问静态成员变量,若想操作其他变量,笔者的习惯是将需要的参数通过函数的输入参数传递进来,需输出多个变量时则通过结构体将其组合进行输出。更加优化的做法则是通过指针或引用对已有参数直接修改。

函数定义同C++,需要注意UE4中使用的变量类型,可参考本文前言贴出的官方文档

编辑CPP文件

CPP中定义该函数,这里简单写一个求和函数

int UMyBlueprintFunctionLibrary::mytest(int a, int b)
{
	int c;
	c = a + b;
	return c;
}

在VS2019中点击本地Windows调试器,等待打开虚幻4编辑器。解决方案配置一般选择Development Editor

在这里插入图片描述

在蓝图中使用

在蓝图中右键搜索刚刚创建的函数名,可以看到他出现在MyFuncLib下,即为刚刚设置的Category名

在这里插入图片描述

点击选中,可以像原生函数一样使用,对其进行测试,可以看到函数成功调用

在这里插入图片描述
在这里插入图片描述

Tips(坑)

在函数声明时,一定要写形参变量名称,即这里的a和b是一定要写的,且与cpp中一致,不可省略

static int mytest(int a,int b);
  • 9
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值