虚幻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);

虚幻4 UE4 蓝图C++混合编程相关推荐

  1. UE4蓝图无代码编程游戏开发技能学习教程

    在虚幻引擎4中创建.设计和开发自己的游戏,无需编码 你会学到什么 虚幻引擎4中使用蓝图的游戏开发(无代码编程) 使用行业标准方法的游戏设计 使用Maya进行三维设计 在本课程中创建您的第一个游戏 Ga ...

  2. c++中获取蓝图组件_蓝图C++混合编程

    注意事项 1)模块接口(API):对于一些需要被模块外部访问的函数和类,需要通过 *_API 的宏标记出来.每个被暴露在外的单项都会带来编译时间的额外消耗,因此请务必仅暴露出必须暴露的接口.如果外部只 ...

  3. UE4学习-UE4结合vs2019混合编程

    文章目录 上篇博文里面,已经提到了如何添加C++组件,在场景中添加一个物体,比如门,然后选中门,点击添加组件,添加C++组件即可.然后这里我要提到的是,昨天遇到的问题,vs2019的智能提示,会提示很 ...

  4. 蓝图解锁怎么用_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)

    不说废话,先上个演示图 最终成果(脚印,雪地可慢慢恢复,地形可控制) 主要原理(白话文): 假如你头上是块白色并且可以透视的平地,来了个非洲兄弟踩上面,你拿起单反对着上面拍了一张,照片如下 把脚印稍作 ...

  5. ue4 怎么传递变量到另一个蓝图_[UE4蓝图]虚幻4中实现简易天气系统(三)—— 受风力影响的Cascade雨水粒子...

    上一篇: 架狙只打脚:[UE4蓝图]虚幻4中实现简易天气系统(二)-- 随机风力​zhuanlan.zhihu.com Cascade就是现在UE4中正在使用的ParticleSystem. 制作雨水 ...

  6. ue4 改变枢轴位置_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)

    不说废话,先上个演示图 最终成果(脚印,雪地可慢慢恢复,地形可控制) 主要原理(白话文): 假如你头上是块白色并且可以透视的平地,来了个非洲兄弟踩上面,你拿起单反对着上面拍了一张,照片如下 把脚印稍作 ...

  7. ue4 改变枢轴位置_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(二)

    上一篇: [UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)​zhuanlan.zhihu.com 10.新建一个MaterialParameterCollection(材质参 ...

  8. UE4 蓝图编程官网初级练习目录

    官网教程 很坑的是官网的教程是按字典序排的,没有整理新手学习路线的 本章学习内容: UE4 蓝图编程学习之路1----新手入门 蓝图快速入门指南 蓝图总览 UE4 蓝图编程学习之路2----常规脚本编 ...

  9. UE4蓝图可视化编程资源发布

    各位购买了<UE4蓝图可视化编程>的读者们你们好!很久没有关注这本书了,发现有的读者有些困扰,这里还是大家先看下译者序(引擎版本一定要选对,翻译的时候最新版本是4.12.5,原书用的是4. ...

最新文章

  1. Kubernetes 中 设置pod不部署在同一台节点上
  2. [epoll]epoll理解
  3. php静态页面缓存,php处理静态页面:页面设置缓存时间实例
  4. react中js文件中写html,javascript – 使用静态HTML与React
  5. Android推送通知指南(转)
  6. 必须进行支持的游戏方可使用此功能_C#8.0 新增功能
  7. windows怎么将图片变为单色图片_印刷丨单色黑与四色黑
  8. Python Machine Learning Windows 安装包网址
  9. mysql时间间隔年份_MySQL DATEDIFF函数获取两个日期的时间间隔的方法
  10. mysql空间数据类型的使用_MYSQL 空间数据类型用法
  11. php电子邮箱表单,带邮件发送功能的表单(form.php)
  12. LeetCode学习记录(7-9)
  13. Android ScrollView 实现整个界面变成列表
  14. 获得Azure订阅LoadBalancer的脚本
  15. jspservlet面试题经典
  16. windows server 2012 R2 安装 vc2015 报错 0x80240017
  17. bypassing waf's in sql injection
  18. 网站访问统计术语和度量方法
  19. 完美起点更重要:青立方超融合易捷版 助力企业一步云就绪
  20. 每日作业20200429 - 二元一次方程 解鸡兔同笼

热门文章

  1. java 中long型数据的对比
  2. 改进杂草算法求解WSN节点分布优化问题
  3. C++实现栈的基本操作(入栈,出栈,取栈顶)
  4. Android Google Map集成以及部分功能的实现
  5. 超级强大的SVG SMIL animation动画详解
  6. ORA-01261 和 ORA-01262
  7. ORA-01034,ORA-27101,ORA-12514
  8. 一文搞懂前台,后台,中台,前端,后端,管理端,业务端,技术中台,业务中台,数据中台,物联网中台到底是什么?
  9. CTFer成长计划训练营第二期挑战赛
  10. oracle教程课件,Oracle教程三PPT课件