自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 【UE】GAS Gameplay Ability

Gameplay Ability. 前文已经提到过是对于流程的编排。它的执行依赖于 Task,异步完成大部分工作。通过委托处理剩余逻辑。以下是我项目的平A代码。平A 需要播放蒙太奇,所以这里需要 AT创建一个 MontageTask,将该 Task 完成后的绑定到函数(自定义),在该函数中实现后续逻辑。这里我平A 的 GE 是通过蒙太奇播放过程中的动画通知中去施加的,没有直接写在 Ability 中。

2026-03-31 15:45:15 259

原创 【UE】UObject 与 类型系统

在UE里,可以看作是一种“轻量”UObject,拥有和UObject一样的反射支持,序列化,复制等。而 C++ 中运行时的类型系统,即 RTTI,常见的两个基本的操作符,typeid 与 dynamic_cast,而类型信息一般以指针的方式存放在虚函数表中。同一般程序的构建流程需要经过预处理、编译、汇编、链接一样,UE为了在内存中模拟构建的过程,在概念上也需要以下几个阶段:生成,收集,注册,链接。在 UE 中,核心中的核心无疑是 UObject 这个类,是所有 Object 的基类。答案就是存储这些类中。

2026-03-30 15:32:43 438

原创 【UE】GAS 概述

在 GA 中,如果不调用 Ability Task,那就代表着是一帧完成的逻辑。而 GA 深度集成 tag, 可以根据tag 作为释放/阻碍条件,也可以作为 GE 生效的前置条件。它们本质上是潜在的/异步的。其中 tag, event, task 是 ue 自带的,与 GAS 其他部分深度集成。Gameplay Ability System,游戏能力系统,简称 GAS。在 GAS 当中,Gameplay Ability,简称 GA。GAS 核心似乎就是ASC, GA,GE, AS,Tag 这一套协作关系。

2026-03-26 22:00:09 359

原创 C++11 返回值优化

C++11的(Return Value Optimization, RVO)是(Copy Elision)优化技术的一种重要实现,其核心目标是。在C++11之前,RVO是一种编译器。C++11标准正式将包括RVO在内的拷贝消除纳入了语言规范。

2026-02-12 21:45:59 162

原创 C++ 内存对齐

理论上,计算机可以访问任何内存地址上的数据。但实际上,系统会对变量的存放地址施加限制,通常要求的。这种限制就是内存对齐。

2026-02-12 20:20:37 896

原创 C++ 多态原理深入理解

多态(Polymorphism)是面向对象程序设计的核心特性,指。

2026-02-12 16:50:15 1135

原创 函数调用与栈帧

执行main时,CPU如何执行add?

2026-02-11 22:15:13 275

原创 C++11 std::packaged_task

把一个包装成“可执行的任务”,并把它的返回值或异常自动写入一个共享状态,从而你可以通过在别处拿到结果。

2026-02-10 17:19:08 256

原创 C++11 std::promise

是 C++11 引入的一个类模板,它提供了一种机制,允许一个线程将计算的结果或异常传递给另一个线程。通过和之间的机制,可以在,特别是结果的传递。

2026-02-08 20:07:11 269

原创 C++11 std::async

std::async一个用于异步执行任务的函数模板,允许我们以异步方式执行一个。异步执行的结果会通过返回的进行管理,核心目标: 提供一种高层次的异步操作接口,允许开发者不必直接管理线程的创建与调度,而是专注于任务的描述与结果的处理。

2026-02-08 19:09:26 305

原创 C++11 std::future

在多线程编程中,某些操作可能需要较长时间才能完成。在这种情况下,我们可以异步执行操作,而不必阻塞主线程。就是为了这种场景设计的,它允许我们在未来某个时间点获取异步操作的结果(异步操作(通常由std::async创建)在内部维护一份持有指向该共享状态的“读取端”,用于。​共享状态会在“提供端”写入或后变为 ready,然后“消费端”通过future来等待并取出。

2026-02-08 16:56:50 766

原创 C++11 std::condition_variable

条件变量用于线程间等待某个条件成立true。

2026-02-08 15:37:16 538

原创 C++11 std::atomic

是 C++ 并发支持库提供的原子类型模板。其核心目标是:主模版实例化条件 的主模板 并非对任意类型开放。当且仅当以下条件全部满足时,程序才是良构的:可平凡复制 是 C++ 类型的一种属性,指该类型的对象可以通过简单的内存拷贝(如 memcpy) 完成复制,且复制后的对象与原对象完全等价、行为正常满足 Trivially Copyable 的条件当 为标准整数类型或 中定义的整数类型时, 额外提供:当 为 、、 或扩展浮点类型时: 提供:提供两种核心构造方式,拷贝构造函数被显式删除为避免并发

2026-02-08 13:45:50 918

原创 C++11 std::thread

表示一个。

2026-02-05 13:35:47 330

原创 C++11 std::mutex

用于在多线程环境下保护共享资源,确保同一时刻进入临界区,从而避免数据竞争和部分并发导致的未定义行为。典型场景:多个线程同时读写同一个、计数器、对象状态等。std::mutex。

2026-02-05 13:35:35 696

原创 C++11 lambda

捕获决定了 lambda 函数能否访问其定义位置的局部变量。成员(调用操作符),用于执行 lambda 的函数体。若想在 lambda 内部修改被值捕获的变量,要加上。这类似于模板参数,让 lambda 能适应更多类型。Lambda 也可以是泛型的,即形参使用。Lambda 表达式其实是一个。是一个独一无二的、无名的类类型。若不指定,编译器会根据。闭包类型至少包含一个。

2026-02-03 15:10:45 168

原创 C++ RAII

常见做法是用“局部对象”持有资源,作用域结束自动析构,从而自动释放资源。之后若是分开返回,不用多次处理资源。资源获取即初始化,资源释放绑定到对象析构。:避免忘记解锁造成死锁,保证异常安全解锁。函数结束时,自动释放资源。其中,只需要在开始时将。、防泄漏、表达所有权。:文件句柄自动关闭。

2026-02-03 15:10:39 277

原创 C++11 std::function

这里使用 function 可以放入相同函数类型的不同类型。的包装器,统一存放和管理各种类型的可调用对象。要求里面的 callable 能以。可调用对象,是可以被调用的实体。调用,并且返回值能转成。类型擦除带来的统一接口。满足以下条件之一即可。

2026-02-02 17:13:35 184

原创 C++11 std::bind

返回一个新的可调用对象,稍后可以在调用时为其传递剩余的参数。它使得函数的部分参数在创建时就被“固定”,而调用时只需要传递未固定的参数。是一个特殊的命名空间,其中包含了一些占位符,如。等,它们用来指定传递给函数的参数位置。

2026-02-02 17:12:06 199

原创 蓝桥杯Tips

蓝桥杯赛前个人总结

2025-04-11 12:25:06 439 2

原创 ChatBox调用API

简单写一下应该如何通过chatbox去调用不同大模型的api

2025-01-04 19:02:35 11719

原创 【数组】5. 螺旋矩阵Ⅱ

在螺旋遍历过程中,核心在于如何正确地处理边界条件并保持遍历规则一致。使用 "左闭右开" 的原则可以有效简化边界处理。每次遍历一条边时,处理起始节点,但不处理终止节点,终止节点留给下一条边来处理。通过保持一致的边界处理规则,可以避免代码复杂度增加以及陷入边界处理的混乱。

2024-10-24 19:23:58 330 2

原创 【数组】4. 长度最小的子数组(滑动窗口

使用滑动窗口来优化暴力解法,降低时间复杂度。滑动窗口是一种双指针方法,使用两个指针来表示窗口的边界。滑动窗口的关键在于动态调整起始位置,以缩小窗口,从而减少计算量。

2024-10-22 21:31:12 378

原创 【数组】3. 有序数组的平方(双指针

Tips:在双指针中,指针指向的是内容。可以决定改变其值,又或者根据对应的值进行判断。

2024-10-20 15:52:22 220

原创 【数组】2. 移除元素(双指针法

给定一个数组和一个目标值,要求从数组中移除所有等于目标值的元素,并返回处理后的新数组的大小。这时需要注意,数组的内存空间是不变的,我们只需把需要保留的元素向前覆盖,并返回新数组的有效长度。通过双指针的方式,只需要一次遍历(即一层循环)就可以完成元素的移除操作,这使得它的时间复杂度是 O(n)。我们具体来看双指针的实现过程。

2024-10-14 17:31:31 446 1

原创 2.逻辑运算

逻辑运算是计算机科学和数字电路中的基础,主要包括逻辑与逻辑或和逻辑非三种基本运算,以及它们的复合运算如与非或非异或和同或等。

2024-07-06 15:51:58 1588

原创 1.数制转换

数制是指表示数码中每一位的构成及进位的规则,常用的数制包括十进制、二进制、八进制和十六进制。二进制 (Binary)基数:2有效数码:0, 1表示方法:如 1012, 1101B八进制 (Octal)基数:8有效数码:0, 1, 2, 3, 4, 5, 6, 7表示方法:如 6178, 547O十六进制 (Hexadecimal)基数:16有效数码:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F。

2024-07-06 15:28:29 620

原创 【数组】1. 二分查找

要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作,这就是。

2024-06-03 15:22:15 404

原创 Unity中Gizmo的示例

在Unity中,Gizmo充当场景视图中的一种视觉辅助工具,。Gizmos通过和这两个特定的方法进行实现。

2024-05-30 07:50:55 1161

原创 Unity游戏对象及其组件的获取

在Unity中,寻找游戏对象或者组件是游戏开发中常见的需求。以下是一些在Unity脚本中寻找游戏对象的常用方法。

2024-05-29 18:37:08 1574

原创 Unity中闪烁效果

协程是Unity中一个非常有用的工具,用于在需要延时或分步执行任务时非常有效。在Unity中,协程通常用于动画、时间延迟等场景。定义和启动协程协程在Unity中通过返回接口的函数定义。使用方法来启动一个协程。协程的工作方式协程允许在不阻断主程序运行的情况下,分步执行代码。通过语句实现暂停和等待,最常见的用法是,表示暂停至下一帧。Mathf.LerpMathf.Lerp是一个数学函数,用于在两个数值之间进行线性插值。常用于动画和平滑过渡效果,尤其是在需要平滑变化一个数值时。函数参数其中a和b。

2024-05-29 07:59:42 2287

原创 Unity中CharacterController模拟力控制

组件是独立于Unity物理引擎的,它处理移动和碰撞而不受标准物理规则的影响。在Unity中如何在玩家与敌人发生碰撞时,垂直于接触面向玩家施加一个力?组件无法直接实现这一效果,因此我探索了一种替代方法来模拟这种力的效应。当敌人与玩家发生碰撞时,玩家应该沿碰撞面法线方向受到一个推力。时模拟物理效果,我们可以采用以下的代码结构。数组获取法线,利用该法线与力的乘积通过。通常情况下,Unity中的。可以通过碰撞信息中的。

2024-05-28 16:32:37 646

原创 CharacterController 和 RigidBody 比较

Rigidbody:依赖物理引擎,适合需要真实物理交互的场景,如物体碰撞、掉落等。:不依赖物理引擎的碰撞响应,适合需要高度控制移动和避免穿透的游戏角色控制,如跑酷、射击游戏中的角色移动。

2024-05-28 08:00:00 1253

原创 Unity中物体移动方式

分别代表速度向量在X、Y、Z轴上的分量(2D物体没有Z轴)。通过设置这些值,你可以精确控制物体在每个方向上的移动速度。忽然改变速度可能会导致穿透其他物体或者产生不连续的动画效果。

2024-05-27 14:47:51 2214

原创 Unity中朝向问题解决方案及其应用

对于2D游戏,通常的需求是让一个对象(如角色或物体)朝向另一个对象或某个点,但仅仅是在2D平面上进行旋转。这可以通过计算两点间的角度,然后设置对象的旋转来实现。方法是设计用于3D环境的,因此直接在2D项目中使用它可能不会得到预期的效果,主要是因为它会考虑所有三个维度的旋转。此处的作用是将物体在y轴上翻转,朝向物体。:在做展示类应用时,可能需要某个对象总是面向用户,特别是在VR或AR应用中。组件,这个组件管理着对象的位置、旋转和缩放。方法可以修改对象的旋转,使其朝向特定的目标。的行为,专门用于2D环境。

2024-05-27 09:14:12 1486

原创 乱改文件名导致在IDE中文件无法载入

笔者之前关于编程文件夹中存在有空格,之前没问题,但是最近出了问题。然后发现是空格出了问题,变为了百分号。于是我便改了文件名。

2024-01-21 20:39:15 562 1

原创 Maven_Home配置问题

这表明你的关于Maven_Home 的配置是正确的,但是Java_Home的环境配置错了。在安装maven后,需要配置环境变量。配置后,但是在cmd中输入。

2024-01-20 19:47:15 550 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除