1,蓝图和c++

2021-08-22  本文已影响0人  桔子和猫

初次接触游戏引擎是从Unity开始的, 打算开始比较的学习虚幻4,发现同为U字辈的两个主流引擎,同为对象+组合模式的基础游戏框架, 虚幻4却难理解的多, 原因是之前对蓝图和GamePlay一直没有理解,导致虚幻4很难学的样子。

基本概念

要制作游戏, 开始总得把一个物体放入游戏场景

什么是蓝图

平常最长混淆的是蓝图, 蓝图Actor(有人叫做蓝图类), 蓝图脚本

蓝图:

虚幻官方开发的一种图形化编程语言

蓝图Actor:

上文说过,Actor能放在场景中,而且本身就是C++代码,所以能继承,我们写一个类继承Actor,我们写的这个类就能放在场景中,而我们写代码方式有两种(C++或者蓝图),如果用蓝图写,那么这个就是蓝图类。其实叫做蓝图Actor更合适,就是因为叫蓝图类,导致我蒙圈了好久才搞清楚,此蓝图类特指用蓝图继承Actor

蓝图脚本:

Actor能挂组件,如果用蓝图来写这个组件, 这个组件就是蓝图脚本

所以可以这么理解, 虚幻开发游戏有两种语言,一种叫c++,一种叫蓝图,继承Actor的就叫xxxActor(有的人叫xxx类),可以被放置,继承其他UObject的就是xxx脚本,专门用来写组件或者写逻辑。

这里说一下,大部分都说蓝图不爽,代码量多了难以维护,写逻辑困难, 写个算法题就满屏飞线等,连连看编程有优势有劣势,讨论蓝图和其他非图形的编程语言没意义。要比也是和其他连连看编程语言比,比如和Unity的图形脚本, 和Godot的图形脚本。

逻辑写在哪

Unity和Godot中理解简单就简单在这, 是比较纯粹的组合架构,写逻辑,就是写脚本组件,Unity挂在GameObject上, Godot挂在节点上。而虚幻写逻辑, 你会发现两个地方,一是像Unity一样,写脚本组件,挂在Actor上,二是直接继承Actor在里面写逻辑。
她是一个半组合半继承的方式,写多了代码的很多人都感觉组合优于继承 能使思路更简单,大部分逻辑都是组合和组件,突然有一部分是继承关系来扩展逻辑,确实挺别扭,但是GamePlay框架即使继承来实现的,没办法,GamePlay框架基于继承所以略显复杂,也导致其很不灵活,不继承就用不了她的功能,继承了就把她所有功能都拿来了,尽管很多功能我并不需要,对喜欢代码干净看起来委实不爽,感觉这也是虚幻引擎成型太早,GamePlay早已固化在引擎里,所以组件化的并没有很彻底。

上一篇下一篇

猜你喜欢

热点阅读