| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> UE4中蓝图构造脚本和C++中构造函数 -> 正文阅读 |
|
[游戏开发]UE4中蓝图构造脚本和C++中构造函数 |
前言初学UE4和C++,在尝试将蓝图函数转为C++代码时候,发现了一个很坑人的玩意,就是蓝图中的构造脚本(Consttruction Script)和C++中类的构造函数不是一个东西!因此想记录下来。 准备工作先创建一个继承Actor的类,现在我有个现成的继承Pawn的类(下文就直接说Actor),可以凑合着用。 CameraOnPlane.h
CameraOnPlane.cpp
其中,这两行代码是用来输出一个名字为TestLog的日志:
最后就是打开关卡蓝图,通过SpawnActor让它在开始运行的时候自动在场景中生成一个Actor。 好了,准备工作完成,先看一下编译和运行的效果。 测试编译日志输出: 开始运行日志输出: 分析编译结果在编译的时候调用了一次构造函数,运行结果显示,在运行的时候构造函数调用了一次,OnConstruction函数也被调用了一次,先来说一下OnConstruction函数,这个函数是Actor生命周期的一部分,在官方文档中是这么说的(这里是原文): 文档怎么一直在说蓝图蓝图的,这不是写在C++里的吗,管蓝图什么事情!(气愤)等等!蓝图好像也有个构造什么玩意: ?对!就是这个玩意,Construction Script——构造脚本,我经常在这个函数里边给类弄点默认参数啊什么的,说白了就是为Actor的生成来一些准备工作,我这么说可能不太准确,来看看官方的说法(这里是原文):
可能我语文不太好,第一次看完一头雾水,只知道它用来初始化,功能非常丰富。等等,初始化?我自然而然又想到了C++里边的构造函数:
好了,构造脚本,OnConstruction和构造函数三个东西穿起来了,都能初始化,那这就是一个东西嘛(顺带一说,我起初认为的是构造脚本和构造函数是一个东西,只不过一个在蓝图一个在C++),如果这么想的话,那刚刚的测试结果怎么说? 直到看到了这篇文档(这里是原文),才懂了那么一丝。
其实,这个OnConstruction函数才是和蓝图里边的构造脚本是一个玩意,跟构造函数毛关系都没有(其实我也不知道是不是毛关系都没有),这个玩意你可得小心着点用,不然就像那个文章里说的,指不定你的编辑器怎么就crash(崩)掉了,而且一运行就让send and restart(别问我是怎么知道的),所以,我们得大概了解一下这个玩意是怎么玩的。 先是这个C++里边的构造函数,这个不多说了,从官方文档里边的好多例子也看出来可以在里边创建一些组件啊,这个组件加到这个组件上,那个组件加到这个组件上,在给组件整点默认的参数什么的,你看那方法上也写了Sets default values,还有就是这个构造函数会在编译和运行的时候调用(从我那个测试结果看出来)。 然后就是这个构造脚本和OnConstruction函数了,这玩意主要在下面三种情况调用:
在那个文章中我注意到一句话:
?这句话的意思是说ConstructionScript会在编译的时候调用而不是在运行的时候调用吗?如果是这样的话好像跟我测试的结果不太一样,难道我哪里搞错了?欢迎指正讨论! 咱接着说这个构造脚本,文章中谈到这个滥用构造脚本会出现一些问题:
总结总的来说,这次学习算是知道了构造脚本和构造函数不是一个东西,和OnConstruction才是一个东西,用的时候还是要慎重一点,鬼知道会出现什么匪夷所思的问题。 最后碎碎念第一次写这么长的文章,如有错误和不足之处还请指正。 参考文章:UE4 - Be careful with the Construction Script - Isara Tech. |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 23:54:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |