<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaolan7777777的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaolan7777777</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaolan7777777]]></copyright><item><title><![CDATA[UE SaveGame]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145492811</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145492811</guid><author>xiaolan7777777</author><pubDate>Fri, 07 Feb 2025 13:00:01 +0800</pubDate><description><![CDATA[定义SaveGame 继承自 UObject，用于实现游戏存档的数据序列化与持久化。功能提供简易的序列化机制，能直接将蓝图或 C++ 中的属性保存到硬盘文件中。与 UGameplayStatics 配合，使用 SaveGameToSlot、LoadGameFromSlot 等接口实现存档和读档。默认使用 FGenericSaveGameSystem 进行本地文件的读写，亦可通过实现 ISaveGameSystem 自定义存储方式（云存档、网络等）。]]></description><category></category></item><item><title><![CDATA[UE GameInstance]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145492787</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145492787</guid><author>xiaolan7777777</author><pubDate>Fri, 07 Feb 2025 12:59:05 +0800</pubDate><description><![CDATA[定义GameInstance 继承自 UObject，是在 UE4 中为游戏提供全局管理与控制的核心类。功能作为全局唯一对象（在大多数常见游戏场景下），贯穿游戏启动到退出的整个过程。可以在其中管理和创建玩家（CreateLocalPlayer 等），存储玩家列表。拥有对 GameMode 等类的重载、修改接口（如 OverrideGameModeClass）。提供对 OnlineSession 的管理功能，可进行网络会话的辅助控制。]]></description><category></category></item><item><title><![CDATA[UE UPlayer、ULocalPlayer、UNetConnection]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145475186</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145475186</guid><author>xiaolan7777777</author><pubDate>Thu, 06 Feb 2025 15:38:59 +0800</pubDate><description><![CDATA[定义UPlayer是 Unreal Engine 中表示玩家的基类。它并不直接与游戏场景中的对象（如角色或物体）关联，而是用于封装玩家的输入来源。功能作为输入信号的发起者，UPlayer代表了从本地或网络设备传递到游戏的所有输入。它与关联，帮助将玩家的输入转化为游戏世界中的动作和反馈。可以支持多种输入方式，如键盘、手柄或远程网络信号。定义是UPlayer的子类，专门用于表示本地玩家。它负责管理本地玩家的输入、视口配置以及与其他本地玩家的交互。功能。]]></description><category></category></item><item><title><![CDATA[UE UNetConnection]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145475134</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145475134</guid><author>xiaolan7777777</author><pubDate>Thu, 06 Feb 2025 15:36:18 +0800</pubDate><description><![CDATA[定义是 Unreal Engine 中用于表示网络连接的类，它将每个远程玩家视为一个连接对象。功能管理玩家与服务器或其他客户端之间的网络通信。负责接收和发送玩家的输入数据，使网络玩家能够在游戏中进行互动。作为一个特殊的Player实现，可以被视作是一个远程玩家的代理。]]></description><category></category></item><item><title><![CDATA[UE LocalPlayer]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145453165</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145453165</guid><author>xiaolan7777777</author><pubDate>Wed, 05 Feb 2025 12:54:53 +0800</pubDate><description><![CDATA[定义是UPlayer的子类，专门用于表示本地玩家。它负责管理本地玩家的输入、视口配置以及与其他本地玩家的交互。功能管理输入设备（如键盘、鼠标、手柄）和视口的设置。在游戏的初始化过程中，负责创建并与其关联。它存储与玩家的本地游戏环境相关的信息，如显示设置、分屏配置等。]]></description><category></category></item><item><title><![CDATA[UE Player]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145453151</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145453151</guid><author>xiaolan7777777</author><pubDate>Wed, 05 Feb 2025 12:53:41 +0800</pubDate><description><![CDATA[定义UPlayer是 Unreal Engine 中表示玩家的基类。它并不直接与游戏场景中的对象（如角色或物体）关联，而是用于封装玩家的输入来源。功能作为输入信号的发起者，UPlayer代表了从本地或网络设备传递到游戏的所有输入。它与关联，帮助将玩家的输入转化为游戏世界中的动作和反馈。可以支持多种输入方式，如键盘、手柄或远程网络信号。]]></description><category></category></item><item><title><![CDATA[UE GameState、GameSession]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145438791</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145438791</guid><author>xiaolan7777777</author><pubDate>Tue, 04 Feb 2025 11:45:59 +0800</pubDate><description><![CDATA[定义GameState是用来保存游戏的当前状态信息的类，包括玩家状态、比赛进度等。功能比赛状态管理：追踪游戏的当前状态，如是否正在进行、是否已结束等。玩家信息收集：管理所有玩家的状态信息，如得分、生存状态等。网络同步：确保游戏状态在所有客户端之间同步。定义是在网络游戏中管理玩家会话和游戏连接的类。功能玩家登录管理：处理玩家的登录和登出过程。会话管理：维护游戏会话的稳定性，管理玩家的连接和断开。]]></description><category></category></item><item><title><![CDATA[UE GameMode]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145438770</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145438770</guid><author>xiaolan7777777</author><pubDate>Tue, 04 Feb 2025 11:44:06 +0800</pubDate><description><![CDATA[定义GameMode是Unreal Engine中定义游戏规则、控制游戏进程的类，是每个游戏世界（World）的逻辑核心。功能类注册：管理游戏中所需的类信息，如玩家和AI控制器、默认Pawn等。实体Spawn：控制游戏中角色和对象的生成，玩家Pawn和PlayerController，AIController也都是由GameMode负责。]]></description><category></category></item><item><title><![CDATA[UE PlayerController、AIController]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145432960</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145432960</guid><author>xiaolan7777777</author><pubDate>Mon, 03 Feb 2025 20:40:52 +0800</pubDate><description><![CDATA[定义是Unreal Engine中用于处理玩家输入并将其转化为游戏世界中的动作的类。它是连接玩家和游戏角色（通常是Pawn）之间的桥梁，负责接收输入并通过Possess方法控制Pawn。功能视角控制：管理玩家的摄像机视角，通过来切换和控制摄像机。输入处理：构建输入堆栈来管理和路由来自玩家的输入命令。UI显示：管理和显示用户界面，如HUD。UPlayer关联：可以是本地的LocalPlayer，或网络控制UNetConnection。]]></description><category></category></item><item><title><![CDATA[UE PlayerState]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145432915</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145432915</guid><author>xiaolan7777777</author><pubDate>Mon, 03 Feb 2025 20:33:16 +0800</pubDate><description><![CDATA[APlayerState用于存储玩家状态信息（如得分、名称），并在多人游戏中跟踪玩家表现。AInfo是一个轻量级类，用于存储不参与物理交互的信息，如游戏规则和状态，帮助优化性能并管理游戏元数据。]]></description><category></category></item><item><title><![CDATA[【UE】 APlayerState]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145420752</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145420752</guid><author>xiaolan7777777</author><pubDate>Sun, 02 Feb 2025 16:28:15 +0800</pubDate><description><![CDATA[APlayerState]]></description><category></category></item><item><title><![CDATA[UE AController]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145392733</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145392733</guid><author>xiaolan7777777</author><pubDate>Wed, 29 Jan 2025 11:58:11 +0800</pubDate><description><![CDATA[【代码】UE AController。]]></description><category></category></item><item><title><![CDATA[【UE】 Pawn]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145387739</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145387739</guid><author>xiaolan7777777</author><pubDate>Tue, 28 Jan 2025 16:09:43 +0800</pubDate><description><![CDATA[Pawn专门用于表示可以被玩家或 AI 控制的角色。可被Controller控制2. PhysicsCollision表示3. MovementInput的基本响应接口主要功能可以被Controller控制，比如玩家控制器或 AI 控制器。支持物理碰撞，以便在游戏世界中与其他对象互动。响应移动输入，如键盘和游戏手柄指令。]]></description><category></category></item><item><title><![CDATA[UE WorldContext、GameInstance、Engine]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145378927</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145378927</guid><author>xiaolan7777777</author><pubDate>Mon, 27 Jan 2025 11:52:12 +0800</pubDate><description><![CDATA[主要用于管理和追踪不同类型的世界（World），它的作用是帮助引擎在不同的世界之间切换和保存这些切换过程中的上下文信息。每一个世界类型（如游戏世界、编辑器世界、预览世界等）都会有对应的，它通过结构来保存当前世界的信息，包括正在进行的旅行（Level切换）、上一次连接的服务器信息等。主要功能追踪当前世界的类型和状态在世界间切换时保存上下文信息管理与TravelURL相关的Level切换逻辑是一个比World层级更高的管理类，它保存了游戏级别的状态、数据以及游戏中需要跨 Level 保持的全局信息。]]></description><category></category></item><item><title><![CDATA[【UE】Level、World]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145370278</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145370278</guid><author>xiaolan7777777</author><pubDate>Sun, 26 Jan 2025 17:41:40 +0800</pubDate><description><![CDATA[Level在Unreal Engine（UE）中代表游戏的关卡或地图，是游戏世界的一个组成部分。它是一个容器，包含了多个游戏对象（Actors），并支持环境的各种设定和行为脚本。World是UE中更高层级的概念，用于组织和管理游戏中的所有Level。它是一个全局容器，包含一个或多个Level。]]></description><category></category></item><item><title><![CDATA[UE UObject、AActor、Component]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145321971</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145321971</guid><author>xiaolan7777777</author><pubDate>Thu, 23 Jan 2025 13:36:30 +0800</pubDate><description><![CDATA[概述：设计理念：]]></description><category></category></item><item><title><![CDATA[C++ 强制类型转换运算符（八股总结）]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145300974</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145300974</guid><author>xiaolan7777777</author><pubDate>Wed, 22 Jan 2025 12:32:49 +0800</pubDate><description><![CDATA[（1）const_cast: 把const属性去掉，即将const转换为非const（也可以反过来），const_cast只能用于指针或引用，并且只能改变对象的底层const（顶层const，本身是const，底层const，指向对象const）；（2）static_cast: 隐式类型转换，可以实现C++中内置基本数据类型之间的相互转换，enum、struct、 int、char、float等，能进行类层次间的向上类型转换和向下类型转换（向下不安全，因为没有进行动态类型检查）。]]></description><category></category></item><item><title><![CDATA[C++ 智能指针（八股总结）]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145281318</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145281318</guid><author>xiaolan7777777</author><pubDate>Tue, 21 Jan 2025 12:36:10 +0800</pubDate><description><![CDATA[shared_ptr的循环引用（circular reference）是指两个或多个shared_ptr实例通过相互引用彼此共享的资源，导致引用计数无法归零，从而无法释放资源的问题。]]></description><category></category></item><item><title><![CDATA[C++ 如何定义一个只能在堆上（栈上）生成对象的类？(八股)]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145281310</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145281310</guid><author>xiaolan7777777</author><pubDate>Tue, 21 Jan 2025 12:35:24 +0800</pubDate><description><![CDATA[原因：在堆上生成对象，使用 new 关键词操作，其过程分为两阶段：第一阶段，使用 new 在堆上寻找可用内存，分配给对象；第二阶段，调用构造函数生成对象。将 new 操作设置为私有，那么第一阶段就无法完成，就不能够在堆上生成对象。原因：C++ 是静态绑定语言，编译器管理栈上对象的生命周期，编译器在为类对象分配栈空间时，会先检查类的析构函数的访问性。若析构函数不可访问，则不能在栈上创建对象。方法：将 new 和 delete 重载为私有。方法：将析构函数设置为私有。]]></description><category></category></item><item><title><![CDATA[C++ 内存分配和管理（八股总结）]]></title><link>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145260220</link><guid>https://blog.youkuaiyun.com/xiaolan7777777/article/details/145260220</guid><author>xiaolan7777777</author><pubDate>Mon, 20 Jan 2025 12:51:14 +0800</pubDate><description><![CDATA[（1）内存对齐的原因：关键在于CPU存取数据的效率问题。为了提高效率，计算机从内存中取数据是按照一个固定长度的。比如在32位机上，CPU每次都是取32bit数据的，也就是4字节；若不进行对齐，要取出两块地址中的数据，进行掩码和移位等操作，写入目标寄存器内存，效率很低。内存对齐一方面可以节省内存，一方面可以提升数据读取的速度；（2）内容：内存对齐指的是C++结构体中的数据成员，其内存地址是否为其对齐字节大小的倍数。（3）对齐原则：1）结构体变量的首地址能够被其最宽基本类型成员的对齐值所整除；]]></description><category></category></item></channel></rss>