- 博客(20)
- 收藏
- 关注

原创 Unity - Spine,如何在Unity中使用Spine做动画系统。
Spine通过骨骼系统(骨架)来驱动 2D 图形,实现流畅的动画效果,适合角色动画的制作。
2024-08-22 21:21:08
2186

原创 再学C++:高级特性:智能指针及其理解
的内存管理始终是一个难题,尤其是引入指针后,共享独享与垃圾回收异常困难。例如下列代码中,三个指针实际上指向同一个实例,将释放后会出现严重的内存问题,此时的被置为,而1和成为悬空指针。因而为了方便的解决内存管理,将指针的使用与RAII技术结合,智能指针诞生了。目前可用的智能指针共有3种,分别是是独占所有权的智能指针,同一时间内只有一个指针可以拥有所指对象的所有权。它在对象生命周期结束时自动释放资源。可以认为,独享指针和它绑定的对象,是强绑定的,谁都不能离开谁。用一个示例快速带大家理解其达成的效果很明显
2024-08-05 13:36:42
1056
原创 开发中众多框架的个人理解,Unity设计模式,MVC,MVVM框架
在软件开发中,架构模式是设计和组织代码的重要方法。本文将详细介绍三种流行的架构模式:ECS(Entity-Component-System)、MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)。我们将探讨它们的定义、特点、优缺点以及在实际开发中的应用示例。
2024-10-14 20:08:00
1517
原创 状态机与行为树的实现;Behavior Designer的使用与自写状态机的几种方法;
在游戏开发中,状态机(State Machine)和行为树(Behavior Tree)是实现 AI 逻辑的两种常见方式,它们各自有着不同的适用场景与优势,理解它们的原理和应用将有助于设计高效、灵活的游戏 AI。
2024-10-14 20:05:45
1322
1
原创 从画质设置看游戏引擎(其一)
在现代游戏开发中,抗锯齿、环境光遮蔽以及其他渲染特性在画质提升和性能优化上扮演了重要角色。接下来我将对这些技术进行更详细的解释,包括它们的工作原理、实现方式以及对画质和性能的影响。
2024-09-24 16:38:07
2656
2
原创 八叉树,分裂空间的魔法师【Unity】
很容易理解,即定义了一个OctreeNode,其拥有一个位置与大小,其包含八个OctreeNode;事实上,如果让我们也这样做,即从头看到尾,依次遍历,寻找。这就是我们的思路,尝试进行分区,然后遍历分区内的物体;同样的,在面对光线计算,遮挡关系计算中也有这个问题。总之,核心并不难理解,其底层就是划分,然后分开处理。所有的物体,通过运算判断是否相交,是否发生碰撞,的时候,例如一枚子弹射了出去,我们或许会选择。老师的图片,很直观的展示了八叉树根本的原理。浅显的理解,可以写一下最基本的数据结构了。
2024-09-10 20:50:07
1181
原创 Unity必备:状态机FSM
首先,定义一个状态接口,每个状态都需要实现这个接口。Enter():当进入这个状态时执行的逻辑。Execute():在这个状态下每一帧执行的逻辑。Exit():当离开这个状态时执行的逻辑。
2024-09-09 18:33:24
895
原创 从源代码看push_back与emplace_back
push_back的左值引用版本会复制元素并添加到vector中,如果没有空间,则重新分配内存,触发拷贝构造。push_back的右值引用版本通过移动语义来提高效率,直接调用。允许在vector中直接构造元素,使用完美转发来支持多种参数类型,进一步优化性能。所以遇到问题可以去翻阅源代码,能够更加清晰的了解这些功能。
2024-09-03 21:31:23
822
原创 经典算法:快速排序
快速排序是一种高效的排序算法,平均时间复杂度为OnlognO(nlogn)Onlogn在最坏情况下,时间复杂度可能退化为On2O(n^2)On2,但通过优化基准元素的选择,可以减少这种情况的发生。快速排序是不稳定的排序算法,可能会改变相同元素的相对顺序。
2024-08-25 13:52:02
910
原创 C++:智能指针与RAII
智能指针是一种用于管理动态分配内存的对象,它能够自动释放所指向的内存,从而减少内存泄漏的风险。智能指针可以认为是对指针的封装,提供了与指针相同的方法。智能指针的本质是在封装与栈,还可以认为是RAII的一种实现。即完全离开作用域触发GC。RAII 是一种编程技术,主要用于管理资源的生命周期。其基本理念是:资源的获取与对象的生命周期相绑定,当对象被创建时获取资源,当对象超出作用域时自动释放资源。
2024-08-25 13:49:58
680
原创 C++:强制类型转换速通
如果将指向基类的指针指向派生类,派生类对象在内存中的布局通常会以基类部分的开头,派生类可以看做是对基类的成员和方法补充拓展。用于不同类型的指针之间的转换,或者将指针转换为整数类型,通常用于底层编程和对位操作的需求。用于基本类型之间的转换,以及具有继承关系的指针或引用之间的转换,例如将指向派生类的指针或引用转换为指向基类的指针或引用。基类对象没有派生类的扩展部分,或者说派生类指针指向的区域比实际指向的"大",如果强制转换,可能会导致访问无效的内存区域或错误的数据。首先,派生类内一定有基类。
2024-08-24 18:49:17
730
原创 C++:虚函数和虚表详细总结
虚函数是基类中使用virtual关键字声明的成员函数,支持动态多态性。通过基类指针或引用调用虚函数时,会根据实际对象类型选择调用相应的函数实现。虚函数的声明class Basepublic:// 声明虚函数在派生类中重写虚函数public:// 使用 override 关键字可选虚表是由编译器为每个包含虚函数的类生成的结构,包含该类所有虚函数的指针。
2024-08-23 13:26:34
733
原创 C#:事件与委托
委托是一种类型安全的方法引用,允许将方法作为参数传递。事件是一种基于委托的通知机制,适用于实现观察者模式。委托和事件在C#中广泛用于异步编程、事件驱动编程等场景。
2024-08-23 13:25:05
1572
原创 再学C++:STL理解:关联式容器(Map、Multimap、Set、MultiSet)
关联容器在C++ STL中非常重要,适用于各种需要存储和查找关联数据的场景。通过理解它们的特点和复杂度,可以更有效地选择合适的容器来解决实际问题。无论是需要保证唯一性的set和map,还是允许重复的multiset和multimap,每种容器都有其独特的用途和优势。
2024-08-22 14:19:15
592
原创 再学C++:STL理解:序列式容器(array,vector,deque,forward_list,list)
理解STL序列式容器(array,vector,deque,forward_list,list)
2024-08-06 14:08:34
742
原创 再学C++:高级特性:Lambda表达式
Lambda 表达式是C++11引入的一种内嵌匿名函数。各个语言中都有体现,在工程中有重要作用,因而记录下个人的理解,并分享给各位。
2024-08-04 16:01:54
848
原创 再学C++:高级特性入门:尝试理解左值、右值,移动语义,完美转发,RVO。
尝试学习C++的高级特性,理解C++中的左值和右值引用、移动语义、完美转发以及返回值优化。
2024-08-03 18:22:05
748
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人