UE5 Lyra项目源码分析-角色配置说明

ops/2024/12/22 11:31:11/

在上一篇里,我们研究了关卡的配置如何在GameMode实现加载的,并稍微理解了Lyra是如何实现的模块化,由于模块化太彻底,所以理解起来有些难,在这一篇里,我们看一下配置里面比较想了解的一块。就是角色是如何配置,并且如何将GAS应用到身上的。

查看地图总配置

我们可以想到,在UI上可以看到,有地图配置和名称描述等内容,当然需要配置文件去配置
在这里插入图片描述
根据在ActionRPG里面学到的经验,我找到对应的用户控件
在这里插入图片描述
在里面发现了对应的用户资产类型,它将所有的对应类型的用户资产加载
在这里插入图片描述
然后查看类型里面的数据能不能默认显示,要不要放到前面优先显示,最后生成用户控件放置到HUD上。
在这里插入图片描述
基于类型,我们搜索所有的资源,可以发现一下资源都是通过此类创建的。
在这里插入图片描述
找到了以后,我们就迫不及待的打开查看一下配置项有哪些内容,发现第一项是关卡,第二项是关卡的玩法配置,后面就是在UI上的一些相关配置。
在这里插入图片描述
然后查看源码,发现MapID和ExperienceID都是通过资源ID进行设置,并且设定了类型,所以,在下拉里,我们只能选中对应的类型的语言。
在这里插入图片描述
还有值得一说的就是ExtraArgs,这个可以通过URL传递额外的配置,我们在上一篇Lyra解析里提到过这里。
在这里插入图片描述
然后就是加载地图时显示的背景图片,这里使用了TSoftClassPtr,也就是配置项里不会存储用户控件蓝图,而是存储的蓝图地址,在需要的时候进行加载。
在这里插入图片描述
后面,我们就要查看游戏玩法配置,接上了上一篇的配置加载解析。
在这里插入图片描述

玩家配置项

接着,我们查看一下玩家配置项,配置项里需要设置玩家使用的蓝图,初始的技能,标签之间的关系,然后就是输入操作触发的技能标签,最后是使用的相机模式。
在这里插入图片描述
技能集是个数组,可以配置多项,里面可以配置应用的技能和触发的标签,技能等级,还有GE和属性集AS
在这里插入图片描述
TagRelationshipMapping 则配置了技能标签之间的关系,这个本来应该是配置到技能里的,看来是为了模块化,也直接分开了
在这里插入图片描述
输入配置 Input Config,里面对应了输入操作Action对应触发的标签,分为默认操作和技能输入标签,实现逻辑应该不同。
在这里插入图片描述
最后是设置控制镜头的使用的类,看了一下应该是Lyra单独实现类,感兴趣的可以看一下源码
在这里插入图片描述

角色的查看完成,接着就是玩法的相关配置了,因为角色的那些配置还不足以支撑起当前游戏玩法,所以,还需要额外的一些操作配置来实现。
后面的玩法的操作配置,上一篇里我们也查看了对应的配置是如何实现,

处理配置

如何能够得之Lyra是如何处理角色数据的,我们可以从GameMode 的ChoosePlayerStart函数入手,这个函数是从场景里获取到玩家出生点,如果你设置了多个,还可以根据逻辑随机一个出生点生成
GameMode里获取出生点也是通过组件去获取的,这里我不再去看细节,感兴趣的可以去看看如何拿到的出生点。
在这里插入图片描述
接着,查看初始化GameState函数,在初始化完成GameState后,绑定监听配置加载完成的函数
在这里插入图片描述
获取到关卡里的所有的玩家控制器,如果从对应的玩家控制器获取不到Pawn,将创建。
在这里插入图片描述
基类里的RestartPlayer函数进行逻辑判断,获取到出生点,然后调用RestartPlayerAtPlayerStart函数
在这里插入图片描述
RestartPlayerAtPlayerStart函数里,先对所需的数据判断,获取到初始点的朝向
在这里插入图片描述
然后判断有没有Pawn,没有通过函数SpawnDefaultPawnFor创建一个
在这里插入图片描述

创建成功调用FinishRestartPlayer成功函数,要不然这调用失败
在这里插入图片描述
SpawnDefaultPawnFor其实就是获取出生点变换,方便后续设置角色位置,然后调用SpawnDefaultPawnAtTransform函数生成pawn
在这里插入图片描述
当然SpawnDefaultPawnAtTransform函数被Lyra覆写了,它是通过ULyraPawnExtensionComponent插件获取到PawnData,就是我们配置项里配置的角色配置去生成玩家控制的角色的
在这里插入图片描述
最后就是调用重置玩家控制角色位置,完成角色的Pawn的创建。
在这里插入图片描述


http://www.ppmy.cn/ops/144008.html

相关文章

ArrayList与LinkedList、Vector的区别

一、ArrayList 和 LinkedList区别: (1)两者都是线程不安全,都实现了Collection接口。 (2)数据结构:ArrayList是基于动态数组的数据结构,LinkedList是基于双向链表的数据结构。 &am…

一款轻量级的开源笔记服务软件

大家好,我是兔兔,一位写作爱好者,今天分享的内容是,如何搭建一个开源的、隐私优先的轻量级笔记服务应用。 不知道大家是否有这样的需求: 1、自己想搭建一个个人的学习笔记文档,既要自己看也可以单独分享给…

介绍 Html 和 Html 5 的关系与区别

HTML(HyperText Markup Language)是构建网页的标准标记语言,而 HTML5 是 HTML 的最新版本,包含了一些新的功能、元素、API 和属性。HTML5 相对于早期版本的 HTML(比如 HTML4)有许多重要的改进和变化。以下是…

Linux下部署MySQL8.0集群 - 主从复制(一主两从)

目录 一、部署前准备 1、查看系统信息 # 查看系统版本 cat /etc/red* # 查看系统位数 getconf LONG_BIT[rootlocalhost ~]# cat /etc/red* CentOS Linux release 7.5.1804 (Core) [rootlocalhost ~]# getconf LONG_BIT 642、下载对应安装包 进入MySQL官网:https:…

【Python】【数据分析】深入探索 Python 数据可视化:Plotly 绘图库全面解析

这里写目录标题 引言一、Plotly 概述二、安装 Plotly三、Plotly 的结构与功能模块3.1 Plotly Graph Objects3.2 Plotly Express3.3 Plotly Subplots 四、Plotly 图表类型五、Plotly 图表自定义与美化5.1 自定义图表标题和坐标轴5.2 自定义颜色和样式5.3 添加注释和文本5.4 图表…

MySQL专题:日志及MVCC

MySQL是一种广泛应用的关系型数据库管理系统,以其高性能和灵活性著称。在保证数据安全性和一致性方面,MySQL通过日志和多版本并发控制(MVCC)提供了强有力的支持。本文将深入解析日志和MVCC的原理及其在实际应用中的作用。 日志&a…

SpringBoot 启动类 SpringApplication 一 构造器方法

SpringApplication SpringBootApplication ComponentScan(basePackages { "com.example.*" }) public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args); // Spirngboot程序入口} } public st…

计算机毕业设计hadoop+spark视频推荐系统 短视频推荐系统 视频流量预测系统 短视频爬虫 视频数据分析 视频可视化 视频大数据 大数据

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…