美文网首页
1,蓝图和c++

1,蓝图和c++

作者: 桔子和猫 | 来源:发表于2021-08-22 12:50 被阅读0次

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

基本概念

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

  • Unity中, 物体是GameObject, 场景是Sence。
    GameObjec可以理解成一个物体,一种最简单的资源, 能被放置, 我们往上挂不同的组件来实现不同的功能,每个组件其实就是C#写的一个脚本, 有官方写好的, 也有我们自己写的,被挂在GameObject上。简单理解就是资源上挂代码, 挂的代码是C#,我们要想写逻辑, 那就挂载一个C#脚本到GameObject上。
  • 虚幻中, 物体是AActor, 场景是Level, 也叫关卡, 也叫Map。
    这里和Unity有一个很大的区别,虚幻中Actor不是一个简单的物体,它本身就是一个复杂的类,本身就可以在里面写逻辑, 可以继承等, 也可以添加组件,每个组件可以用C++写, 也可以用蓝图脚本写。所以虚幻中是 代码上挂代码, 挂的代码是C++或者蓝图脚本

什么是蓝图

平常最长混淆的是蓝图, 蓝图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早已固化在引擎里,所以组件化的并没有很彻底。

相关文章

  • 1,蓝图和c++

    初次接触游戏引擎是从Unity开始的, 打算开始比较的学习虚幻4,发现同为U字辈的两个主流引擎,同为对象+组合模式...

  • Unreal 事件

    事件 可 实现 C++与蓝图之间的通信C++触发蓝图监听 事件的声明 事件1和事件2类似于两个对象 例如标识符声明...

  • unreal C++初步介绍

    unreal C++ UE4提供了两种创建新Gameplay元素的方法:C++和蓝图视觉脚本。 程序员利用C++即...

  • 任意结构体转为json String

    分类:UE4 c++ 标签:蓝图函数库 新建了一个c++写的蓝图函数类 在项目的build.cs里面添加"Json...

  • 常用API_转载自CSDN萌蛋蛋

    C++暴露给蓝图可编辑 UCLASS(Blueprintable) 创建FString FString::Prin...

  • 虚幻4,从入门到放弃(一)

    谨以此记录自己学习UE4(C++)的路程。 虚幻4提供了两种方法创建游戏性元素:C++和蓝图可视化脚本。这里着重记...

  • 2018-03-05 问答笔记

    怎么在c++或者蓝图里面动态设置材质的透明度、visiable createdynamicmaterial

  • Animation Montage

    通过C++或者蓝图直接控制动画资产。(参考文档Using Animation Montages)可以整合多个Ani...

  • UE4之UFUNCTION介绍

    UFUNCTION UFunction 是虚幻引擎4(UE4)反射系统可识别的C++函数。 UObject 或蓝图...

  • 蓝图

    蓝图blueprint 定义蓝图 在home和admin目录下init.py中定义蓝图 调用蓝图 在home和ad...

网友评论

      本文标题:1,蓝图和c++

      本文链接:https://www.haomeiwen.com/subject/mtbciltx.html