ue5 lyra探索分析1

ue5 lyra的角色动画系统 持续更新中。。。。 当然弊端是有的,如果不同的骨架,骨架偏差比较大, retarget后动画会有偏差,所以虚幻做的retarget大面上看上去是美好的,如果要抠细节,会有很多的不足。在这些逻辑中该用到AI中的layer都用了layer,只不过这些layer有的是空的,逻辑都在其他动画蓝图中。这个方法去调用,相当于用B中的layer覆盖了A中的layer的逻辑,相当于具体的逻辑实现都在B中实现。在A中写了整个的动画逻辑比如locomotion,上半身特定动画融合,挨枪子的动画融合,全身动画融合等。 阅读详情

问题1:

这个地图的worldsetting中并没有指定gamemode,那么游戏运行的时候角色的类型是怎么指定的呢?

 

有人说在projectsetting中有一个全局的gamemode

 但是这个角色的类型也不是真的运行起来角色的类型

 真的运行的时候角色的类型是 如上图所示

找一下吧,看看具体是在哪里设定的,过程是如何的。茫茫大海如何着手呢,我先在lyracharacter的构造函数打个断点看看

 从堆栈中找到一个有用的信息

 从图上看spawn的时候已经指定好了,而且这个函数是重载基类的方法,继续跟代码。

UClass* ALyraGameMode::GetDefaultPawnClassForController_Implementation(AController* InController)
{
	if (const ULyraPawnData* PawnData = GetPawnDataForController(InController))
	{
		if (PawnData->PawnClass)
		{
			return PawnData->PawnClass;
		}
	}

	return Super::GetDefaultPawnClassForController_Implementation(InController);
}

重载了父类 的方法,这里出现了ULyraPawnData这个数据类型,继续跟代码

 发现首先从gamestate上找到一个叫ULyraExperienceManagerComponent组件

从组件上获得一个ULyraExperienceDefinition数据类型的数据。

继续找

const ULyraExperienceDefinition* ULyraExperienceManagerComponent::GetCurrentExperienceChecked() const
{
	check(LoadState == ELyraExperienceLoadState::Loaded);
	check(CurrentExperience != nullptr);
	return CurrentExperience;
}

void ALyraGameMode::OnMatchAssignmentGiven(FPrimaryAssetId ExperienceId, const FString& ExperienceIdSource)
{
#if WITH_SERVER_CODE
	if (ExperienceId.IsValid())
	{
		UE_LOG(LogLyraExperience, Log, TEXT("Identified experience %s (Source: %s)"), *ExperienceId.ToString(), *ExperienceIdSource);

		ULyraExperienceManagerComponent* ExperienceComponent = GameState->FindComponentByClass<ULyraExperienceManagerComponent>();
		check(ExperienceComponent);
		ExperienceComponent->ServerSetCurrentExperience(ExperienceId);
	}
	else
	{
		UE_LOG(LogLyraExperience, Error, TEXT("Failed to identify experience, loading screen will stay up forever"));
	}
#endif
}
void ALyraGameMode::HandleMatchAssignmentIfNotExpectingOne()
{
	FPrimaryAssetId ExperienceId;
	FString ExperienceIdSource;

	// Precedence order (highest wins)
	//  - Matchmaking assignment (if present)
	//  - URL Options override
	//  - Developer Settings (PIE only)
	//  - Command Line override
	//  - World Settings
	//  - Default experience

	UWorld* World = GetWorld();

	if (!ExperienceId.IsValid() && UGameplayStatics::HasOption(OptionsString, TEXT("Experience")))
	{
		const FString ExperienceFromOptions = UGameplayStatics::ParseOption(OptionsString, TEXT("Experience"));
		ExperienceId = FPrimaryAssetId(FPrimaryAssetType(ULyraExperienceDefinition::StaticClass()->GetFName()), FName(*ExperienceFromOptions));
		ExperienceIdSource = TEXT("OptionsString");
	}

	if (!ExperienceId.IsValid() && World->IsPlayInEditor())
	{
		ExperienceId = GetDefault<ULyraDeveloperSettings>()->ExperienceOverride;
		ExperienceIdSource = TEXT("DeveloperSettings");
	}

	// see if the command line wants to set the experience
	if (!ExperienceId.IsValid())
	{
		FString ExperienceFromCommandLine;
		if (FParse::Value(FCommandLine::Get(), TEXT("Experience="), ExperienceFromCommandLine))
		{
			ExperienceId = FPrimaryAssetId::ParseTypeAndName(ExperienceFromCommandLine);
			ExperienceIdSource = TEXT("CommandLine");
		}
	}

	// see if the world settings has a default experience
	if (!ExperienceId.IsValid())
	{
		if (ALyraWorldSettings* TypedWorldSettings = Cast<ALyraWorldSettings>(GetWorldSettings()))
		{
			ExperienceId = TypedWorldSettings->GetDefaultGameplayExperience();
			ExperienceIdSource = TEXT("WorldSettings");
		}
	}

	ULyraAssetManager& AssetManager = ULyraAssetManager::Get();
	FAssetData Dummy;
	
UE5.2 LyraDemo源码阅读笔记(一) GameMode:默认模式>默认游戏模式>选中B_LyraGameMode。 启动关卡:默认地图>编辑器开始地图。GameFeature: 启动插件:编辑/插件,在插件列表中选中GameFeature和Modular Gameplay。 创建GameFeature:编辑>插件>+添加>游戏功能(GameFeature,适用C++) 保存路径不能更改:真要改同时要去AssetManager更改对于的路径。 GameFeature入口: 默认下GameFeature插件会加载所有的自定义GameFeature功 阅读详情

相关推荐

UE5动画扭曲插件实战:实现Lyra级角色移动丝滑转向

动画系统是游戏角色表现的核心,其核心目标在于弥合预制动画资源与实时动态游戏状态之间的差距。传统动画混合技术虽能实现状态切换,但在处理角色快速转向、斜坡适配等复杂运动时,常出现脚步滑动、身体扭转不自然等问题。其原理在于通过运行时对骨骼层级(尤其是脊柱链)施加精准的旋转偏移,动态调整动画姿势以匹配由玩家输入或游戏逻辑计算出的目标朝向。这项技术的核心价值在于,它以一种高性能的后期处理方式,显著提升了角色移动的响应性与视觉保真度,是实现3A级角色操控手感的关键组件之一。在应用场景上,它广泛应用于需要高度角色操控感的

weixin_30328063的博客 417

UE5源码获取、编译与高效学习指南:从环境搭建到实战调试

在游戏开发与实时3D内容创作领域,理解底层引擎原理是提升开发能力的关键。现代游戏引擎通过模块化架构与反射系统,将复杂的图形渲染、物理模拟和游戏逻辑封装成可扩展的框架。掌握引擎源码不仅能深入理解其运行机制,更能针对特定项目进行性能优化与功能定制,从而在AAA级游戏开发、虚拟制片和仿真训练等高要求场景中实现技术突破。本文聚焦于UE5(Unreal Engine 5)这一行业标杆工具,围绕其源码的合法获取、本地环境配置及高效学习路径展开。通过关联GitHub与Epic账户获取官方源码后,需配置高性能编译环境(如V

weixin_27960253的博客 321

Unity与虚幻引擎核心技术对比:从编程、渲染到项目选型全解析

游戏引擎是现代游戏开发的核心框架,它封装了底层图形渲染、物理模拟、音频处理等复杂系统,为开发者提供高效的创作工具。其工作原理在于通过编辑器、脚本系统和资源管线,将代码逻辑与美术资产结合,实时生成交互式体验。引擎的技术价值在于大幅降低开发门槛、提升内容生产效率,并保障跨平台运行的一致性。在应用场景上,从移动休闲游戏、VR应用到3A主机大作,都离不开引擎的支撑。本文聚焦于行业最主流的Unity和虚幻引擎,深入对比两者在编程模型、渲染管线、资源管理及工作流上的核心差异,并结合实际开发中遇到的性能优化、资源打包等高

weixin_30553777的博客 401

UE5与C++学习路径:从编程基础到游戏开发实战

面向对象编程(OOP)是构建复杂软件系统的核心范式,它通过封装、继承和多态等机制组织代码,提升可维护性和复用性。在游戏开发领域,这一原理尤为重要,因为游戏通常由大量交互实体和复杂状态管理构成。C++作为一门支持OOP的高性能语言,能够直接操作内存并提供精细控制,是实现高性能游戏逻辑和引擎定制的关键技术。其价值在于平衡开发效率与运行性能,尤其在需要处理大量实时计算和图形渲染的场景中。智能指针等现代C++特性进一步简化了内存管理,降低了资源泄漏风险。在虚幻引擎(UE)生态中,C++不仅是引擎自身的实现语言,更是

weixin_34195364的博客 431

UE5动画革命:RootYawOffset与动画曲线实现角色丝滑转身

在游戏角色动画开发中,解决角色转身时脚部滑动和动作割裂感是提升视觉真实性的核心挑战。其原理在于动画根骨骼的旋转与角色实际运动方向不匹配,传统动画混合或运动匹配方案各有局限。UE5的RootYawOffset技术提供了一种数据驱动的程序化修正方案,它通过计算并应用根骨骼的旋转偏移,智能分离角色下半身(脚部)与上半身的运动。这项技术的核心价值在于实现了基于物理直觉的动画融合,其关键在于利用自定义动画曲线进行强度调制,让美术资源与程序逻辑高效协作。该方案广泛应用于需要高品质角色移动和战斗反馈的第三人称动作游戏、射

weixin_33787529的博客 632

UE4商城资源下载原理与合规管理指南

在游戏开发中,数字资产管理是提升效率的关键环节。其核心原理通常涉及资源清单解析、文件校验与重组等技术。通过理解网络协议模拟与数据解析机制,开发者可以更好地构建自动化工具,实现资源的批量获取与本地化管理,这对于团队协作与资产复用具有重要价值。在实际应用场景中,如UE4/UE5项目开发,开发者常面临官方商城资源下载与管理效率的挑战。本文围绕UE4 Marketplace下载器这一主题,深入探讨了其背后的技术实现,并着重分析了使用此类工具可能引发的账户安全风险与软件安全风险,旨在引导开发者建立合规、高效且安全的资

cuanji3287的博客 391

UE5 Lyra Experience控件模式详解

在UE5的Lyra示例项目中,Experience(游戏体验)是一种核心的控件模式,用于动态配置和管理游戏玩法模块。它通过数据资产的形式,将关卡逻辑、角色配置、插件加载等功能模块化,从而实现不同游戏模式的灵活切换。Experience是一个数据资产(),用于定义特定游戏模式所需的全部配置。模块化配置Experience包含需激活的Game Feature插件列表默认角色数据(Pawn Data)初始化时需执行的Action集合等。动态加载:在切换关卡或模式时,通过加载不同的Experience资产。

m0_45371381的博客 1583

UE5 官方案例Lyra 全特性详解 15.背包系统Inventory System4

这一篇中涉及了服务器端的代码,理解难度稍微高一点,算是商店系统的核心代码,同时通过服务器端的操作将商店和Lyra的背包打通,使两者可以进行数据交互.

CloudHuCoding 1167

UE5 官方案例LyraStarter 全特性详解 0.概览

这一篇讲得比较浅显,主要是对整个项目有个大体的认知,下一篇将会手把手带大家一起开发一个新技能,力求尽可能的详细,从而使大家先掌握整套系统的使用方式. 再下一篇再一起制作一个武器,当然,这些都在官方的视频演讲中演示过了,可能大家已经会了,如果是已经掌握用法的朋友可以跳过这两篇内容. 在掌握用法后,后面的篇章就是深入源码去理解背后的机制,做到知其然,也知其所以然. 官方说这个案例会持续更新,因为`UE5`还有很多特性,所以这个专题也会尽量跟上节奏.......

CloudHuCoding 3724

Vivado项目开发新思路:用VSCode写代码,用Vivado管理IP核与综合(Windows/Mac环境通用指南)

本文介绍了如何结合Vivado和VSCode的优势,打造高效的FPGA设计工作流。通过配置VSCode的Verilog插件和Vivado环境集成,开发者可以在VSCode中编写代码,同时利用Vivado管理IP核与综合,显著提升开发效率和团队协作体验。

weixin_42545503的博客 331

01-SA8155 QNX 虚拟机Hypervisor

Hypervisor运行在Host OS操作系统上,其他操作系统均在Hypervisor上运行。:Hypervisor直接运行在硬件上,操作系统在Hypervisor之上运行。终止(关闭):echo control 0 dev/vmm。路径:qnx_ap/AMSS/platform/vm/resources/关闭/终止 qvm(GVM):slay -s SIGQUIT qvm。", //host PVM --- 主机。不直接操作/dev/vmm 实现关闭,启动vm。

静虚待令,有物混成 1万+

电感选型不当的代价:从纹波激增到系统失稳的深度剖析

本文深度剖析了电感选型不当对开关电源系统的严重影响。电感值过小会导致纹波电流激增、元件热应力加剧、EMI超标乃至MOSFET击穿;电感值过大则会引起环路响应迟滞、动态性能下降和轻载效率恶化。文章通过实测案例,强调了超越经典公式进行动态与容差考量的必要性,并提供了基于饱和电流、温升电流及环路测试的精准选型方法论,帮助工程师规避从纹波失控到系统失稳的潜在风险。

flink9streamer的博客 400

手把手教你用smarteye搭建免费GB28181监控平台(含海康设备接入避坑指南)

本文提供了一份基于SmartEye搭建免费GB28181视频监控平台的实战指南。详细介绍了从服务器部署、GB28181协议核心配置,到海康威视等主流设备接入的完整流程,并重点分享了设备注册失败、无法预览等常见问题的深度排错方法,旨在帮助中小企业及开发者低成本实现多品牌监控设备的统一管理。

pz89012345的博客 317

ESP32 WiFi自平衡小车硬件与PID控制实战

自平衡小车是典型的嵌入式实时反馈控制系统,其核心依赖姿态感知(如MPU6050)、电机驱动(如L298N)与闭环控制算法(如PID)的协同。系统通过IMU采集俯仰角,经互补滤波融合处理,再由PID控制器实时计算PWM输出,驱动直流电机产生恢复力矩;WiFi模块(ESP32内置)则提供远程遥控接口,实现AP模式下的Web指令交互。该架构兼具硬实时性(毫秒级采样与响应)与软实时性(HTTP服务),广泛应用于机器人教学、智能小车开发及边缘控制原型验证。本文围绕ESP32平台,详解传感器接口、驱动电路设计、PID抗

weixin_42509513的博客 389

GJB 5000B二级-II实施基础

本文主要描述GJB 5000B二级II实施基础与GJB 5000A的变化情况,以及过程域各条款的实施要点

Abel的博客 2569

在 SAP HANA 与 HANA Cloud 中,用 SQL DDL 创建数据库视图:从设计时工件到运行时对象的全链路实践

本文介绍了在SAP HANA中通过HDI容器使用DDL定义视图的方法。主要内容包括:1)采用.hdbview设计时工件存储视图定义,构建时自动转换为运行时视图,实现版本控制和权限隔离;2)开发前需准备HDI容器、MTA项目及配置.hdiconfig文件;3)详细说明.hdbview语法结构,重点讲解WITH READ ONLY和WITH STRUCTURED PRIVILEGE CHECK的使用场景;4)提供了从创建文件到构建验证的完整流程示例;5)强调跨容器访问时需通过.hdbgrants为#OO用户授予

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 257

【数据集】MODIS 的 MOD07 大气廓线产品概述及下载

MODIS 的 MOD07 大气廓线产品概述及下载

WW、forever的博客 543

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: ue5 小知识点 加载某种类型(PrimaryDataAsset)的所有asset到内存中
下一篇: 纯 windows 环境 制作 mac os 安装盘 usb
[苦行僧]
博客等级 码龄23年 117粉丝 118原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值