UE4 Demo总结

UE4 Demo总结,第1张

一、项目概述

1根据项目需求,我做了一个小游戏,小游戏的规则很简单,游戏开始时会有4个四处巡逻的AI,当发现玩家后会追上玩家然后自爆。

     玩家会扣一定的血量,当玩家的血量归零时,游戏就会失败。

2场景中会放置一些金币,玩家拾取后会加分,当拾取所有金币后则游戏成功。

GameInstance这个类可以跨关卡存在,它不会因为切换关卡或者切换游戏模式而被销毁。

二、项目总结

1制作该项目的具体步骤如下:

     a首先需要制作游戏的开始界面,使用UMG进行设计,具体做法为:

          1使用Border组件进行背景的设计

          2使用Vertical Box组件进行选项框的设计。

          3在设计好大小的Vertical Box中设计选项按钮。

          4设计按钮的绑定事件,点击开始按钮则跳转到游戏,点击退出按钮则终止游戏进程。

     b然后设计会四处巡逻的AI,并且发现玩家后会追向玩家:

          1首先设计AI的结构,本项目中的AI是继承玩家Character的。

          2继承好以后删除AI的FollowCamera组件和输入相关的蓝图

          3在AI头顶添加一个Widget组件来显示AI名字。

          4设计AI的自动巡逻和跟随玩家的逻辑,利用蓝图来进行设计:

               a首先为AI添加一个PawnSensing组件来设计AI的视野。

               b当AI看到玩家时,获取当前玩家的位置,让AI移动到该位置。

               c当AI成功追上玩家后,销毁AI并扣除玩家的HP

               d当AI没有看到玩家时,会先获取一个随机的坐标值,然后让AI移动到该坐标。

     c设计玩家逻辑:

          1首先为玩家添加一个Widget组件来显示玩家的血条和分数。

          2然后为玩家设计两个Int类型变量,分别为HP和Points

          3设计拾取金币逻辑,即当玩家与金币碰撞后,Points就加1。

          4设计每帧触发事件,即每帧判断当前HP和Points的值。

          5若HP的值<=0,则显示游戏失败界面并退出游戏。

          6若Points的值>3,则显示游戏成功界面并退出游戏。

     d设计金币蓝图:

          1金币蓝图的逻辑较为简单,就是当玩家碰撞到金币时就销毁金币Actor

          2设计金币的样式,添加一个RotatingMovement组件来让金币自动旋转。

2制作该项目过程中遇到的难点:

     1设计开始界面时,还没点击开始游戏按钮,游戏进程就已经开始运行了?

          答:这个问题的原因主要是开始界面和游戏进程在一个关卡中,

              解决这个问题的方法有两种,一种就是将界面设计在另一个关卡中,当点击开始游戏按钮后就跳转到游戏进程关卡。

              还有一种方法就是在界面d出后,主动暂停游戏进程,当点击开始游戏按钮后再恢复游戏进程。

     2在设计玩家头顶的血条信息时,当第一个AI碰撞后,血条直接归0?

          答:这个问题的出现是类型转换的问题,由于血条使用的是ProgressBar组件,它的值是0到1的float类型的值。

              而之前设计的HP的值是0到100的Int类型的值,由于Int类型的值不存在小数运算,所以就会出现这个问题。

              解决这个问题的方法就是将HP转换成Float类型再进行运算。    

UE4蓝图虽说是可视化编程,但是终究离不开 数据类型,逻辑表达,类, 对象, 继承,多态等程序基础,只不过这些东西变成了可视化的节点模块方便调用,学习方法和学习传统的编程大致相同,先学习基础了解下蓝图支持的的数据类型有哪些,然后在学习逻辑表达式,数组,枚举的使用,掌握了这些基本上可以写个猜数字等小功能了,熟练这些就开始学习UE4的API方法,学习蓝图之间的通信机制,继承关系,不需要全面精通,把最常用的一些方法记住即可,熟练这些就算入门了,写个横版马里奥或3D跑小人基本上可以,掌握了这些在往上进阶就是使用蓝图与内置组件搭配,蓝图与C++搭配,蓝图的网络功能使用等,比如UE4的状态机,行为树,AI组件,联网组件等等,掌握到这些功能,基本上你就可以开发一些相对复杂的游戏了,在往上这块学习重点不在局限与单纯的实现出来,重点在于结构算法与数据驱动,会用到蓝图的继承封装多态设计模式等等功能,重点在于逻辑设计而非逻辑实现,在往上进阶就是为蓝图开发插件,自定义蓝图的工作流,达到这个级别其实已经超出普通的UE4工程师范围,更像是职业的C++工程师了,甚至已经超出大半传统游戏软件程序员的开发能力了!

一个媒体框架(Media Framework)组件就可以了。

在日常使用UE4做项目时,会遇到在UE4里播放视频文件的需求,在UE4中可以使用媒体框架(Media Framework)来实现这一功能。

首先我们要有一个视频文件,在官方文档中提到建议使用H264编码的MP4 (mp4)容器文件,所以为保险起见最好把其他格式的视频文件转换为mp4格式。

在工程文件夹Content中新建一个文件夹命名为Movies,将视频文件放在此路径下,注意文件夹命名一定要是Movies,这样才能够打包成功。(项目名称\Content\Movies)

拖拽、添加的方式。

在Unity中,可以使用拖拽、添加的方式将组件添加到Scene中的GameObject上,使该GameObject实现编写的组件功能,这种方式对于场景逻辑开发十分便捷,可以将物体的每个逻辑功能,单独剥离出来抽象成功能组件。

在UE4中,也可以使用类似的方法,将对物体的逻辑功能单独写在蓝图Actor中,在需要时给定相应的物体即可,如实现一个陨石围绕星球旋转的功能,利用样条spline实现。新建蓝图Actor,命名RotateSphere。为Actor添加staticMesh和Spline节点,并把中心的mesh设为根节点,修改ClassSetting中的ParentClass为StaticMeshActor,在level中的模型上右键,选择ReplaceSelectedActorwith按钮。

在组件面板添加组件,创建你所需要的模型,并安装所需要的组件。

导入时,导入对话框中将显示多个选项。第一个是3D几何体、布告板、或两者之间进行的选择。如果一棵树只用于近景,它即为一颗“英雄”树,否则将布告板设为最低的LOD时将出现问题(因为有时动态阴影会投射在平坦的布告板几何体上),可选择无视布告板网格体。如果一棵树只用于远景,需要减少3D几何体的加载,则可只将布告板导入。只导入布告板网格体还将创建一个静态网格体,可与UE4的植物图层一同使用。在导入对话框中还可选择3D树材质是否包含细节、高光、以及枝干缝隙混合。还可为材质添加顶点处理,将一个特殊的SpeedTree节点放入材质中,处理风吹、布告板、以及树上其他按每个顶点计算的效果。最后可将SpeedTree建模器中设置的碰撞基元导入新建SpeedTree网格体上的碰撞信息。

首先需要一个模型。

在Edit->项目设置->输入在Action Mappings中添加一个按键事件Fire,设置按键为空格,制作一个子d的蓝图类Bullet,将制作好的子d拖进去放在0,0,0点。在事件图表中找到我们创建的Fire事件,侧函数栏点击加号,创建一个新的函数goFire并拖进事件图表连接Fire与goFire,我们要让按下Space,调用Fire事件的时候,再去调用goFire函数,然后去goFire函数里实现我们的功能。来到goFire函数,首先我们要在按下Space时产生子d,所以我们使用SpawnActor选择从类生成Actor,在Class里选择我们的子d蓝图类我们要设置子d生成的位置,子d应该生成在炮筒的位置,在组件选项里添加组件添加一个空的组件Scene,在视口里调整位置放在炮口。回到goFire里,我们需要把Scen的Location和Rotation赋给生成的子d,所以我们要获取到Scene的Rotation和Location这样,此时当我们回到关卡中运行,按下Space,就会产生一个子d,此时再运行时,子d就可以掉下来了,最后我们在给子d一个速度因为子d有物理效果,所以我们需要通过Set Physics Linear Velocity的方法给一个线性速度。我们需要给子d一个速度值,然而这个值应该是始终朝着子d的前方的,所以我们不能直接赋值,我们需要先得到子d的旋转,再得到子d向Y轴的坐标,再把这个值赋给速度。Speed是我们定义的一个float变量,用来控制子d飞行的速度。这样,子d的才可完成。

前排看文档啦,看懂了就不用看下面这些废话啦: >

必须安装基本运行框架才能使用。

Visual Studio 核心编辑器(Visual Studio Community 2017 随附)

ID: MicrosoftVisualStudioWorkloadCoreEditor

说明: Visual Studio 核心 shell 体验,包括语法感知代码编辑、源代码管理和工作项管理。

Azure 开发

ID: MicrosoftVisualStudioWorkloadAzure

说明:用于开发云应用、创建资源以及生成包括 Docker 支持的容器的 Azure SDK、工具和项目。

数据存储和处理

ID: MicrosoftVisualStudioWorkloadData

说明: 使用 SQL Server、Azure Data Lake 或 Hadoop 连接、开发和测试数据解决方案。

数据科学和分析应用程序

ID: MicrosoftVisualStudioWorkloadDataScience

说明: 用于创建数据科学应用程序的语言和工具(包括 Python、R 和 F#)。

NET 桌面开发

ID: MicrosoftVisualStudioWorkloadManagedDesktop

说明: 使用 C#、Visual Basic 和 F# 生成 WPF、Windows 窗体和控制台应用程序。

使用 Unity 的游戏开发

ID: MicrosoftVisualStudioWorkloadManagedGame

说明: 使用 Unity(功能强大的跨平台开发环境)创建 2D 和 3D 游戏。

使用 C++ 的 Linux 开发

ID: MicrosoftVisualStudioWorkloadNativeCrossPlat

说明: 创建和调试在 Linux 环境中运行的应用程序。

使用 C++ 的桌面开发

ID: MicrosoftVisualStudioWorkloadNativeDesktop

说明:使用 Microsoft C++ 工具集、ATL 或 MFC 生成 Windows 桌面应用程序。

使用 C++ 的游戏开发

ID: MicrosoftVisualStudioWorkloadNativeGame

说明: 以 DirectX、Unreal 或 Cocos2d 为后盾,利用 C++ 的强大功能生成专业游戏。

使用 C++ 的移动开发

ID: MicrosoftVisualStudioWorkloadNativeMobile

说明: 使用 C++ 生成适用于 iOS、Android 或 Windows 的跨平台应用程序。

以上就是关于UE4 Demo总结全部的内容,包括:UE4 Demo总结、UE4要怎样去学习蓝图、ue4 几个组件播放一个视频等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9758104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存