虚幻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);
虚幻4 UE4 蓝图C++混合编程相关推荐
- UE4蓝图无代码编程游戏开发技能学习教程
在虚幻引擎4中创建.设计和开发自己的游戏,无需编码 你会学到什么 虚幻引擎4中使用蓝图的游戏开发(无代码编程) 使用行业标准方法的游戏设计 使用Maya进行三维设计 在本课程中创建您的第一个游戏 Ga ...
- c++中获取蓝图组件_蓝图C++混合编程
注意事项 1)模块接口(API):对于一些需要被模块外部访问的函数和类,需要通过 *_API 的宏标记出来.每个被暴露在外的单项都会带来编译时间的额外消耗,因此请务必仅暴露出必须暴露的接口.如果外部只 ...
- UE4学习-UE4结合vs2019混合编程
文章目录 上篇博文里面,已经提到了如何添加C++组件,在场景中添加一个物体,比如门,然后选中门,点击添加组件,添加C++组件即可.然后这里我要提到的是,昨天遇到的问题,vs2019的智能提示,会提示很 ...
- 蓝图解锁怎么用_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)
不说废话,先上个演示图 最终成果(脚印,雪地可慢慢恢复,地形可控制) 主要原理(白话文): 假如你头上是块白色并且可以透视的平地,来了个非洲兄弟踩上面,你拿起单反对着上面拍了一张,照片如下 把脚印稍作 ...
- ue4 怎么传递变量到另一个蓝图_[UE4蓝图]虚幻4中实现简易天气系统(三)—— 受风力影响的Cascade雨水粒子...
上一篇: 架狙只打脚:[UE4蓝图]虚幻4中实现简易天气系统(二)-- 随机风力zhuanlan.zhihu.com Cascade就是现在UE4中正在使用的ParticleSystem. 制作雨水 ...
- ue4 改变枢轴位置_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)
不说废话,先上个演示图 最终成果(脚印,雪地可慢慢恢复,地形可控制) 主要原理(白话文): 假如你头上是块白色并且可以透视的平地,来了个非洲兄弟踩上面,你拿起单反对着上面拍了一张,照片如下 把脚印稍作 ...
- ue4 改变枢轴位置_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(二)
上一篇: [UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)zhuanlan.zhihu.com 10.新建一个MaterialParameterCollection(材质参 ...
- UE4 蓝图编程官网初级练习目录
官网教程 很坑的是官网的教程是按字典序排的,没有整理新手学习路线的 本章学习内容: UE4 蓝图编程学习之路1----新手入门 蓝图快速入门指南 蓝图总览 UE4 蓝图编程学习之路2----常规脚本编 ...
- UE4蓝图可视化编程资源发布
各位购买了<UE4蓝图可视化编程>的读者们你们好!很久没有关注这本书了,发现有的读者有些困扰,这里还是大家先看下译者序(引擎版本一定要选对,翻译的时候最新版本是4.12.5,原书用的是4. ...
最新文章
- Kubernetes 中 设置pod不部署在同一台节点上
- [epoll]epoll理解
- php静态页面缓存,php处理静态页面:页面设置缓存时间实例
- react中js文件中写html,javascript – 使用静态HTML与React
- Android推送通知指南(转)
- 必须进行支持的游戏方可使用此功能_C#8.0 新增功能
- windows怎么将图片变为单色图片_印刷丨单色黑与四色黑
- Python Machine Learning Windows 安装包网址
- mysql时间间隔年份_MySQL DATEDIFF函数获取两个日期的时间间隔的方法
- mysql空间数据类型的使用_MYSQL 空间数据类型用法
- php电子邮箱表单,带邮件发送功能的表单(form.php)
- LeetCode学习记录(7-9)
- Android ScrollView 实现整个界面变成列表
- 获得Azure订阅LoadBalancer的脚本
- jspservlet面试题经典
- windows server 2012 R2 安装 vc2015 报错 0x80240017
- bypassing waf's in sql injection
- 网站访问统计术语和度量方法
- 完美起点更重要:青立方超融合易捷版 助力企业一步云就绪
- 每日作业20200429 - 二元一次方程 解鸡兔同笼