【游戏编程扯淡精粹】UE5 蓝图
最近新学蓝图编程。。还没看蓝图VM代码,有些点不保证准确
本文主要是从使用角度,分析你为什么需要学习蓝图,蓝图适合做什么,不适合做什么
最后 Bonus,跟一下 Blueprint Pipeline,梳理一下蓝图的知识结构
大纲
- 蓝图是什么
- 蓝图对非程序
- 蓝图对程序
- 蓝图适合用于
- 蓝图不适合用于
- 蓝图管线
- 蓝图版本管理
- 蓝图迁移 Lua
蓝图是什么
Blueprint - Wikipedia
蓝图(英语:Blueprint),港澳地区又称“蓝本”或“蓝纸”,是工程制图的原图经过描图、晒图和薰图后生成的复制品,因为图纸是蓝色的,所以被称为“蓝图”。蓝图类似照相用的相纸,可以反复复制新图,而且易于保存,不会模糊,不会掉色,不易玷污。
蓝图这个词的本义很接近 Prefab,预制体,蓝图描述一个东西的结构和行为,可以多次拷贝,实例化为具体的实体 Entity
UE 蓝图是一种资源,把引擎暴功能以可视化脚本的形式暴露出来
另外,UE3 时代的可视化脚本叫做 Kismet
蓝图实现原理
实现原理,基本综合了常见脚本方案的做法
- Lua,一般的脚本语言一样,跑解释器执行
- IL2Cpp,编译到C++
- GDScript,和引擎内核紧密结合
说下第三点,主要是和 Lua 有区别
Lua 是通用的,有自己的对象模型,但是接入每个引擎,都需要做一个类型映射,记录额外的类型信息,这是有开销的,想一想各种 SDK 的 XXXVector3 类
蓝图是直接在 UE 内核上实现的,因此只能 UE 用,没有类型映射的开销
如果需要 UE 蓝图编辑,在自家引擎跑,就需要实现一个 Compiler,把蓝图翻译成自己引擎的格式,工作量和坑不小
蓝图对非程序
脚本对非程序的游戏开发技能提升是有积极意义的
脚本本质是把 Compiler 和 Linker 集成到 Engine Runtime,这样只要下载游戏就可以编程了