自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Lua 闭包

场景内存分配性能上下文绑定可靠性​重复创建闭包高低可靠​缓存闭包(handler)​低高可靠。

2025-04-01 18:18:50 408

原创 游戏性能优化篇——大量UI同屏

开发一个需要处理大量UI元素的游戏,比如策略类或者MMO,这类游戏通常会有复杂的界面和众多交互元素。具体问题包括UI卡顿、高Draw Call、内存占用过大或者渲染性能低下。需要从多个层面入手,比如减少渲染开销、优化布局计算、管理更新频率、内存控制等。首先,UI的渲染优化是关键。Canvas的重绘是Unity中常见的性能瓶颈,过多的UI元素导致批次合并失败,从而增加Draw Call。应该建议将静态和动态元素分开到不同的Canvas,利用批处理。

2025-03-09 17:20:58 632

原创 游戏性能优化篇——大量敌人同屏

大量敌人同时可见,这种情况下渲染和CPU计算可能是主要的性能问题。例如攻城战,敌人可能同时进行动画、物理模拟和AI计算,这些都是资源消耗点。通常优化可以从渲染、LOD、动画、实例化、遮挡剔除、AI优化等方面入手。如果需要敌人敌人大多数都在屏幕上可见,遮挡剔除可能效果不大,但LOD仍然有用,因为远处的敌人可以用低模。渲染方面,GPU的压力可能很大,所以合并绘制调用,使用GPU实例化(如Unity的SRP Batcher或GPU Instancing)可以显著减少Draw Call。

2025-03-05 15:15:22 780

原创 设计模式学习记录

在Unity中,观察者模式可以用于实现事件驱动的架构,例如游戏中的敌人需要响应玩家的生命值变化,或者UI元素需要响应游戏角色的状态变化等。接下来,我们创建一个具体的GameService类,它实现了IGameService接口,并提供了实际的游戏服务功能。// 用于存放对象池中的对象。接下来,我们创建一个具体的主题类,例如Player,它可以注册和移除观察者,并在特定事件发生时通知它们。然后,我们定义一个IObserver接口,该接口包含一个Update方法,这是所有观察者必须实现的方法。

2024-12-02 11:44:00 904

原创 Unity Vector2Int

Vector2Int是 Unity 引擎中的一个结构体,位于命名空间内。它用于表示二维空间中的位置或向量,但与Vector2不同的是,Vector2Int使用整数而不是浮点数来表示坐标值。这使得Vector2Int在处理需要精确整数值的场景时非常有用,例如在网格或地图上的位置表示、像素级别的图像处理等。

2024-11-11 14:44:36 442

原创 C# HashSet

参考文章HashSet是 C# 中的一种集合类型,位于命名空间内。它主要用于存储一组不重复的元素,这些元素没有固定的顺序。HashSet是基于哈希表实现的,这意味着它的内部结构允许高效的查找、添加和删除操作,通常情况下这些操作的时间复杂度接近 O(1),即常数时间复杂度。

2024-11-11 14:34:54 1945

原创 AB9 【模板】链表 牛客

insert x y:将yy加入链表,插入在第一个值为xx的结点之前。若链表中不存在值为xx的结点,则插入在链表末尾。保证xx,yy为int型整数。delete x:删除链表中第一个值为xx的结点。若不存在值为xx的结点,则不删除。输出一行,将链表中所有结点的值按顺序输出。若链表为空,输出"NULL"(不含引号)。接下来的nn行,每行一个字符串,表示一个操作。保证操作是题目描述中的一种。第一行输入一个整数nn (1≤n≤1041≤n≤104),表示操作次数。

2024-11-09 17:06:38 216

原创 C++ Getline

std::cout

2024-11-09 14:01:35 348

原创 PIO14 单组_保留小数位数 牛客

第一行有一个小数 n ( 1≤n≤109 )n ( 1≤n≤109 )。如果原来的小数位数多于 33 ,需要四舍五入到 33 位。给定一个小数 nn ,请你保留 33 位小数后输出。如果原来的小数位数少于 33 ,需要补充 00。输出一个小数,保留 33 位。

2024-11-09 13:04:05 168

原创 PIO13 多组_带空格的字符串_T组形式 牛客

给定 tt 组询问,每次给出一个长度为 nn 的带空格的字符串 ss ,请你去掉空格之后,将其倒置,然后输出。每组的第二行有一个字符串 ss,仅包含小写英文字符和空格,保证字符串首尾都不是空格。每组的第一行有一个整数 n ( 1≤n≤105 )n ( 1≤n≤105 )。第一行有一个整数 t ( 1≤t≤105 )t ( 1≤t≤105 )。输出 tt 行,每行一个字符串,代表倒置后的字符串 ss。保证 ∑n≤105∑n≤105。随后 tt 组数据。

2024-11-09 12:08:18 134

原创 C++ vector

vector是 C++ 标准模板库(STL)提供的一种序列容器,允许在运行时动态地插入和删除元素。vector基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。这使得vector成为 C++ 中常用的数据结构之一。vector以long long类型为例,定义一个二维vectorint n, m;// 读取二维数组的行数 n 和列数 m// 定义一个 n x m 的二维向量,存储数组元素// 读取二维数组元素i < n;++j) {

2024-11-09 10:56:32 432

原创 Unity 实验一RooaBall 课堂作业随笔

记录分数与结束条件设置、UI设置:在挂载在小球上面的代码中实现加入count变量,在碰撞中实现如何count的累加,当count达到固定数值时将结束面板激活或者切换场景(新场景中拥有激活的UI面板)。另外需要一个脚本控制摄像机移动,只需在场景中将摄像机调节到合适的角度,在脚本中记录两者的间距,在update函数中根据小球位置不断更新摄像机位置。// 平滑跟随的速度。//private void EndGame()//切换场景结束代码,非必须。// // 结束游戏,可以重载场景或其他操作。

2024-09-06 10:24:12 1112

原创 Unity的Input.GetAxis

Input.GetAxis()函数返回值为float类型的值,取值范围为-1~1,例如,对于游戏杆的水平轴,值为 1 表示游戏杆向右推到底,值为 -1 表示游戏杆向左推到底;对于Mouse X和Mouse Y,Mouse X用于控制物体绕Y轴旋转(即左右旋转),而Mouse Y用于控制物体绕X轴旋转(即上下旋转)。Unity支持多种输入设备,一些输入设备的控制方式相似,按键盘上的W键或上箭头键与将手柄的左摇杆向前推都代表“向上”,以下代码可以获取用户当前的纵轴输入和横轴输入。

2024-04-04 23:34:50 1363 3

原创 GAMES101 作业1

0), 你需要将这三个点的坐标变换为屏幕坐标并在屏幕上绘制出对应的线框三角形 (在代码框架中,我们已经提供了。填写一个旋转矩阵和一个透视投影矩阵。函数,所以你只需要去构建变换矩阵即可)。绕 z 轴旋转的变换矩阵。

2024-02-29 22:04:04 354

原创 GAMES101 作业0

使用Eigen::Matrix3d分别定义旋转矩阵和平移矩阵,(旋转矩阵使用rotation << cos(angle), -sin(angle), 0, sin(angle), cos(angle), 0, 0, 0, 1;初始化表示绕原点旋转,平移矩阵使用translation << 1, 0, 1, 0, 1, 2, 0, 0, 1;实现这一点,先将点 P 应用旋转矩阵,然后再应用平移矩阵。,再平移 (1,2), 计算出变换后点的坐标(要求用齐次坐标进行计算), 将该点绕原点先逆时针旋转 45。

2024-02-25 14:36:02 319 1

原创 贪心算法 力扣第122题:买卖股票的最佳时机 II

贪心是局部最优可以推出整体最优。这种方法模式一般将求解过程分成若干步骤,但每个步骤都应用贪心原则,选取当前状态下最好的选择(最优选择),并以此希望最后堆叠出的结果也是最好/最优的解。因此原则上做题思路是划分成多步,然后保证局部最优,当每一步都是局部最优时最终就可以得到全局最优解。eg:找零钱问题在拥有零钱面额10元,5元,1元,5毛,2毛,1毛若干的情况下,在找零57.8元时,给出所使用的零钱张数最少的方案。使用贪心算法,在满足情景的情况下选取面额由大到小的零钱。

2023-07-17 20:01:05 192 1

空空如也

空空如也

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

TA关注的人

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