实现自定义扩展点_目录·蓝图扩展概述

81cfb6b105c116e4c94f13634ead2435.png

虚幻引擎的蓝图是一种基于节点的可视化脚本编程系统,对它的扩展也就主要是生成新的功能节点了。目前在工作中要到的蓝图扩展方式主要有以下几种:

  1. 蓝图宏(Blueprint Macros)可以把一系列节点组成的操作包装成一个节点;
  2. 使用C++编写蓝图可调用的UFunction,则蓝图编辑器会自动生成对应的蓝图节点,这是最常用的一种方式;
  3. 通过派生蓝图节点的基类:class UK2Node,可以灵活的定制节点的各种行为,典型的是“动态添加/删除针脚(pin)”的需求。这个派生类对应的功能逻辑主要通过重载父类的两个行为接口来实现:Expand Node和Node Handling Functor。

这个专栏主要是谈C++编程的扩展方式,所处蓝图宏就不谈了,官方的文档说的比较清楚,也很易用。一般性的UFunction扩展方式,官方文档也比较详细,也就不赘述了。

这个专栏主要讲2,3中的内容,特别是官方没什么文档的那些功能如何实现。具体的内容规划如下(以下文章建议按顺序阅读):

  • 通过实现一个派生类,轻松完成异步操作的蓝图节点封装:
将异步操作封装为蓝图节点​zhuanlan.zhihu.com
2aed0e5fc975c2b8cc38b246e4068f0e.png
  • 通过自定义Thunk函数实现指出“通配符”参数的“UFunction模板函数”节点:
实现蓝图模板函数​zhuanlan.zhihu.com
52c89de6635b81ca5a38962fe5b925d4.png
  • 详细讲解“通过派生class UK2Node”创建自定义蓝图节点的步骤:
通过派生class UK2Node创建自定义蓝图节点​zhuanlan.zhihu.com
0dcdd468294e8418cd8603addb08f50a.png
  • 实现蓝图节点的动态添加/删除Pin:
实现蓝图节点的动态添加/删除Pin​zhuanlan.zhihu.com
8098c17092284b29e492b9b8d5a999e5.png
  • 通过派生FNodeHandlingFunctor 实现自定义class UK2Node派生类自定义蓝图节点的编译,控制编译过程中statement、terminal、net的生成或配置:
使用Node Handler定制蓝图节点的编译过程​zhuanlan.zhihu.com
5cc45340a61889790519462a7add5d8d.png
  • 通过讲解蓝图编辑器的技术架构,以及蓝图虚拟机的运行机制,深入的理解蓝图:
理解蓝图技术架构​zhuanlan.zhihu.com
6ddae5ec28760f44b472480b8619c3bc.png

以上这些内容,主要是笔者通过阅读引擎源代码,加上一些试验验证之后,总结出来的。希望对大家有所帮助。如果有不够准确的地方,还请指出。:)

最后,夹带点私货吧:

游戏程序员的自我修养​neil3d.gitee.io

这是我的GitHub Page,欢迎访问。:D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值