- 博客(142)
- 收藏
- 关注
原创 C++—22、C++ 中析构函数Destructors及堆和栈回顾
栈内存由编译器自动管理,分配速度快,适用于存储局部变量和小型数据结构,但空间有限,适用范围有限。堆内存由程序员手动管理,适用于存储大型数据结构和对象,具有较大的空间,但分配速度较慢,容易出现内存泄漏等问题。【面试】解释一下C++中堆和栈的区别_c++堆栈区别面试-优快云博客什么是堆?什么是栈?他们之间有什么区别和联系?- tolin - 博客园类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。
2025-02-06 15:10:27
607
原创 C++—20、C++ 中枚举ENUMS
枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。定义格式:枚举类型的定义格式为:enum<类型名>{<枚举常量表>};关键字enum——指明其后的标识符是一个枚举类型的名字。枚举常量表——由枚举常量构成。"枚举常量"或称"枚举成员",是以标识符形式表示的整型量,表示枚举类型的取值。枚举常量表列出枚举类型的所有取值,各枚举常量之间以","间隔,且必须各不相同。取值类型与条件表达式相同。例如://定义枚举类型color_set1。
2025-01-19 11:08:20
1034
原创 C++—19、C++ 中静态存储static
当我们把static.cpp文件里的static去掉。编译运行发现有一个重复定义的变量,如下图:可以看到在linking阶段有个link错误。因为s_Variable已经在另一个编译单元里定义了,所以两个全局变量的名字不能一样。类型特点函数内部静态变量在函数体内,静态变量具有记忆功能,即一个被声明为静态的变量只会被初始化一次,然后在这一函数被调用的过程中其值维持不变文件内静态变量用来限制变量或函数的作用域为当前文件。
2025-01-18 11:36:49
867
原创 C++—18、C++ 中如何写类
这里的LogLevelWarning是不存在的,让我们声明log level变量,接下来我们将创建一些私有变量,代表我们的log级别。
2025-01-16 16:39:24
697
原创 C++—17、C++ 中的类和结构体的区别
结构体用来表示一些数据,class用来使用作为很多功能的类,例如玩家,或者其他可能继承的东西。两者除了可见性之外没有什么区别。
2025-01-15 22:19:34
824
原创 C++—16、C++ 中的类class的基础知识
所以本质上来讲,类就是能使我们对变量进行组织,变成一个类型,还为这些变量添加了函数。如果再仔细看看代码,其实类里面我们就定义了3个变量,还有一个move函数来操作这些变量。当然了,函数可以做任何事情,但重点是我们有数据和操作这些数据的函数,这就是类的全部了。你会发现能用类完成的,同样可以不用类完成,类不是万能的,它只是让程序员更轻松,更好的组织和维护代码,仅此而已。
2025-01-13 11:34:45
507
原创 C++—15、C++ 中的指针的拓展—引用reference
引用只是指针的一个拓展,你要想听懂引用的内容,最少需要先去了解指针是如何工作的。指针和引用是c++中常被提及的两种关键字,它们实际上是一回事。指针和引用在使用上来说,其实是一回事。当然,我们如何写它们,怎么用它们还是有些不同,但是本质上来看,引用就是指针,它俩就是一回事。引用就是指对现有变量引用的一种方式,和指针不同,指针中要先创建一个指针变量,然后给它赋值nullptr或者其它等于0的值,引用不能这么做,因为“引用”必须引用一个已存在的变量,引用本身并不是一个新的变量。它们并不真正占用内存。
2025-01-11 21:37:32
607
原创 C++—14、C++ 中的指针最基础的原理
指针是一个无符号整数(unsigned int),其值表示一个内存地址(其存储一个内存地址)。因为我们代码所做的每一件事都是从内存中读取或者写入内存。内存可能是你拥有的至关重要的东西,你的电脑所能提供的重要的资源,所有的东西都依赖它,所以能够对这些内存有更多的控制至关重要。指针的类型与指针的值没有任何关系,类型只是我们虚构出来的,好让我们感觉轻松些,别管你有什么类型的指针,里面存放的都是个整数,都是个地址。二、实例应用新建项目,里面只有一个main.cpp文件。
2025-01-10 21:00:25
1593
原创 C++—9、如何在Microsoft Visual Studio中调试C++
断点是一个标记,指示 Visual Studio 应在哪个位置挂起运行的代码,以查看变量的值或内存的行为,或确定代码的分支是否运行。它是调试中最基本的功能。我们首先要做的是设置一个断点,然后逐步运行程序。我们可以在程序的任何一行代码上设置断点,当执行到这一行时,它会暂停,它将悬停整个程序,我们可以查看内存情况,一个正在运行的程序,内存几乎是它的全部,所以在诊断程序时能查看内存是非常重要的。因为通过查看内存你可以看到每个变量被设置成什么样子了。如何插入断点?
2025-01-09 10:30:53
960
原创 UE4_用户控件_6_通过控件蓝图内部变量来修改进度条的值
发现控件类图类的引用和用户控类引用不兼容,修改变量类型。我们需要添加到视口,同时设置输入模式。创建按钮的点击事件,当点击时调用角色的自定义事件clearwidget。可以了,但是没有退出控件,没有鼠标,所以改进一下。
2025-01-08 20:43:03
818
原创 UE4_用户控件_4_Widgets嵌套Widgets构建复杂系统
那么我们来创建一个枚举型Race变量,根据下拉列表框的值来设置此变量。结构体类型的变量来源于可编辑文本框、滑块和组合框。但你会发现组合框被选择的值为字符串,类型不匹配。(3)当下拉列表框已变更选择时调用。(2)当两个滑块的值变更时调用。(1)当文本被修改时调用。(2)分别设置绑定函数。
2025-01-06 11:54:58
522
原创 UE4_用户控件_3_用户控件输入数据的方法
创建按钮的点击事件,当点击时调用角色的自定义事件clearwidget。可以了,但是没有退出控件,没有鼠标,所以改进一下。
2025-01-02 16:11:13
1282
1
原创 UE4_用户控件_9_用按钮来控制播放动画
发现控件类图类的引用和用户控类引用不兼容,修改变量类型。我们需要添加到视口,同时设置输入模式。7、因为所有控件的退出按钮是一样的,所以这里创建一个公共的退出按钮。创建按钮的点击事件,当点击时调用角色的自定义事件clearwidget。测试一下:可以了,但是没有退出控件,没有鼠标,所以改进一下。
2024-12-31 10:00:09
1383
原创 UE4_用户控件_10_用图像来显示场景捕获的渲染目标
发现控件类图类的引用和用户控类引用不兼容,修改变量类型。我们需要添加到视口,同时设置输入模式。7、因为所有控件的退出按钮是一样的,所以这里创建一个公共的退出按钮。创建按钮的点击事件,当点击时调用角色的自定义事件clearwidget。测试一下:可以了,但是没有退出控件,没有鼠标,所以改进一下。
2024-12-30 11:46:33
1273
原创 UE4_用户控件_2_按钮的动态效果
注意文字控件一开始是要隐藏的。这就是为什么我们需要的变量类型为用户控件的类引用,把变量AffectUMG赋予它:我们设置下输入模式为设置仅输入模式UI,set input Mode UI Only:添加到视口add to Viewport:继续完善showUMG事件,让UMG_Exit添加到视口先测试下效果:没有触发成功,原因是什么呢?是因为我们还没有在BP_EventTrigger的重叠事件中“事件Actor开始重叠”中让角色显示控件。运行效果如图:当退出按钮被我们单击时调用。
2024-12-28 15:40:43
1432
原创 UE4_用户控件_1_滑块控制图像颜色的变化
添加自定义事件,创建用户控件实例这就是为什么我们需要的变量类型为用户控件的类引用,把变量AffectUMG赋予它:我们设置下输入模式为设置仅输入模式UI,set input Mode UI Only:当退出按钮被我们单击时调用。添加点击时事件,我们需要运行角色的HideUMG事件,当然我们得需要角色先有HideUMG自定义事件,首先把显示控件添加的用户控件都给删除。设置HUDActive变量为false,再把UMG_Exit移除。
2024-12-19 11:05:17
895
原创 UE4_贴花_贴花基础知识二
在本示例中,你将了解贴花如何在多个表面上进行投射。请注意,如果表面朝向与投射方向较为平行,贴花投射时必然会产生一些拉伸。另外,请记住,贴花可以在包括骨骼网格体在内的静态和动态网格体上进行投射。展示如何使用类别下的属性关闭特定网格体上的贴花。请注意,你需要点击该类别的展开箭头才能看到此属性。
2024-12-11 14:42:03
577
原创 UE4_贴花_贴花基础知识一
贴花可以将材料和各种材料元素投影到表面上。您可以使用它们来添加独特的效果。是一种可以投射到网格体(包括静态网格体和骨骼网格体)上的材质。无论这些网格体的移动性(Mobility)是静态(Static)还是可移动(Movable),贴花都可以投射到它们上面。此外,你可以同时渲染许多贴花,而且并不会造成性能大幅下降。但是,如果它们的屏幕空间较大且着色器指令数较高,性能将会下降。
2024-12-11 11:47:12
1458
原创 UE4_环境_体积云_通过蓝图来控制云彩的形状及位置。
1、开启插件Volumetrics,重启虚幻编辑器。2、确定视图选项中“显示引擎内容”被勾选。
2024-12-07 11:21:14
565
原创 UE4_材质_世界场景位置偏移_角色擦除效果
通过材质来操纵网格体顶点的偏移,物体的坐标原点没变,但是网格体已经按照顶点在世界场景中的位置按照相反的方向归到(0,0,0)了。
2024-12-05 10:34:01
594
原创 UE4_材质节点_有关距离的_流体模拟
想象一下空间中只有两个实体, 一个球,一个圆柱.空间由无数个点组成, 取其中任何一个点, 比如,它跟球面的是3, 跟圆柱面的是2, 那么这个点的值就是2. 空间中所有的点都按照这个方法取值, 就形成了一个标量场, 称为距离场.距离场计算出来以后, 能够得到场中任何一个点跟(比如上例中的球和圆柱)之间的如果距离场的值表现为图像的明度, 它的视觉印象是一个个由参考物体分割出来的渐变区域.
2024-12-02 10:46:41
842
原创 Python 数模基础实例5—线性图形绘制-Matplotlib库的使用
这段代码生成的图表展示了三条不同的线图,分别使用了不同的标记和线宽。图表的 x 轴和 y 轴范围都设置为 (0, 8),并且 x 轴和 y 轴的刻度都设置为从 1 到 7。是 Matplotlib 库中的一个函数,用于自动调整子图的位置和间距,以防止子图之间的标签和标题相互重叠或超出图表的边界。“subplots”通常是指在Python的Matplotlib库中用于创建包含多个子图的图形的功能。函数可以方便地创建一个包含多个轴(axes)对象的图形,每个轴对象可以独立绘制不同的数据。
2024-11-22 16:47:49
1086
原创 Python 数模基础实例4—表格数据处理Pandas库的使用
通过print(type(df))来查看,发现它是pandas.core.frame.DataFrame。发现有rangeIndex是20,而英文描述中的non-null为16,说明有4条缺失数据。发现还是出现错误提示,sheet1名字不正确,我们打开excel表格观察,print(df.info())#打印出基础信息看看类型-修改成功了吗?编码读取文件,但如果你的文件使用了不同的编码,就会出现这种错误。这会输出文件的编码信息,你可以根据检测结果来指定。你可以尝试指定文件的正确编码。
2024-11-22 11:44:27
1024
原创 Python 数模基础实例3—数值运算numpy库的使用
标准差(Standard Deviation) ,是离均差平方的算术平均数的平方根,用σ表示。在概率统计中最常使用作为统计分布程度上的测量。标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。通过数组名【下标】可以获得数组成员,通过数组名【下标:下标】可以获得数组的区域成员。通过数组的shape属性值来查看数组是几行几列的。通过shape属性知道了数组是2行5列的。注意二维数组二层中括号包裹的。
2024-11-21 11:55:13
371
原创 Python 数模基础实例2—数值运算、表格数据处理及图形绘制库的安装
pip是Python包管理工具,该工具提供了对Python包的查找、下载、安装、卸载的功能。
2024-11-20 16:43:39
191
原创 UE4_Niagara基础实例—15、粒子发射器之间的通信
要想让第二个发射器产生的粒子向第一个发射器产生的粒子靠齐,我们就需要用到点吸引力或者点排斥力,同时得到第一个发射器粒子的位置就可以了,要想得到第一个发射器粒子位置,那么我们就得需要粒子属性阅读器。粒子属性阅读器获得的东西太多,我们需要读取出来设置给一个变量,变量再传给点吸引力的位置即可。
2024-11-07 11:13:52
686
原创 UE4_Niagara基础实例—13、通过纹理采样来创造粒子
1、纹理采样目前仅支持GPU粒子运行(Texture sampling is only supported on the GPU at the moment.)
2024-10-31 11:53:28
1176
原创 UE4_Niagara基础实例—11、模拟炮弹发射
1、新建niagara粒子系统,添加fountain发射器作为炮弹发射的发射器,static beam条带作为拖尾效果的制作,Simple Sprite Burst作为拖尾的粒子,最后爆炸散开用Omnidirectional Burst全方位喷发。2、把多余的删掉,比如Spawn Burst Instantaneous(瞬间生成、瞬间爆发)、Beam Emitter Setup、Spawn Beam和Beam Width删除。5、删掉原来的圆锥方向的速度,换成添加速度,并修改速度的方向和范围。
2024-10-30 14:32:00
1075
原创 UE4_Niagara基础实例—10、位置事件
若要为烟花火箭创建尾迹效果,则可将模块放置到火箭发射器的粒子更新(Particle Update)组中。然后,尾迹发射器可使用位置数据生成跟随火箭的粒子。我们要做的事情是在这条条带的粒子位置上生成粒子散出去。
2024-10-25 16:40:51
975
原创 UE4_Niagara基础实例—9、使用条带渲染器来制作闪电
即同样的RibbonID粒子会被串联,被串联的粒子上都有一个RibbonLinkOrder去记录其在Ribbon上的位置顺序,然后分配一个宽度去渲染。可以看出Ribbon Renderer(条带渲染器)也是一个很重要的渲染器,可以用来做一些带子的效果,或者是运动轨迹、拖尾之类的特效。我们需要调整里面的参数,把Vector Scale设为200,我们发现条带的长度出来了,随机也有了,但是不是我们要的效果。也可以修改粒子持续时间。让X、Y的选取范围为-100到100,Z的选区范围为-400到-600之间。
2024-10-25 16:00:47
611
原创 UE4_Niagara基础实例—8、生成网格体粒子并与角色产生交互
7、为了让niagara系统与外面的一个角色位置或者其它位置进行交互,我们需要在用户公开里面新建一个向量。我们可以把角色位置或者物体的位置传递给niagara系统参数用户公开的targetposition。5、如果方向不正确,我们可以调整初始化网格体的朝向Initial Mesh Orientation。先添加个变量对场景中的niagara系统的对象进行引用,公开他,去场景角色细节面板设置它。3、如果是地上爬的需要加碰撞,去掉反弹力bounce,同时还得添加扰乱力和加速度等。让网格体朝向粒子的速度方向。
2024-10-22 10:07:01
642
原创 UE4_Niagara基础实例—7、如何让粒子照亮周边环境
Niagara渲染器Niagara渲染器说明虚幻引擎应该如何显示每个生成的粒子。注意,这不一定是可视的。与模块不同,渲染器在堆栈中的位置不一定与绘制顺序相关。以下部分是光源渲染器类型中可用的参数,以及该参数的作用说明。
2024-09-30 09:16:35
1538
原创 UE4_Niagara基础实例—4、静态网格体表面生成粒子
分析:在物体面上生成粒子,改变粒子的不透明度,让粒子收到力,并添加紊乱,类似于水蒸气。
2024-09-28 16:44:21
653
原创 UE4_Niagara基础实例—3、使用自定义模块二
目前没有模块提供这个功能,我们需要自己来做这个模块,先自定义个模块首先要知道现在这个粒子位置在哪里?我们还得知道限定在球内,这个球的半径是多少?我们添加个浮点数来存放半径,更名为radius。我们还得知道球的中心的位置向量,更名为centervector。接下来,我们需要判断粒子离中心位置的距离是不是超过半径,超过了怎么办?不超过怎么办?这个节点可以获得向量的方向和向量的长度,我们只要用粒子位置减去中心点位置向量,就可以得到以中心点为坐标的向量,然后获得向量的方向和长度即可。
2024-09-27 14:32:06
541
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人