- 博客(138)
- 收藏
- 关注
原创 UE赋予某个C++类tick的能力
注册到 Ticker ,返回值是一个句柄,后面如果有需要可以移除该ticker。,重写Tick()函数来获取tick能力。允许注册一个函数,使其在每帧被调用。设置一个定时器来定期调用自定义的。函数,而不是在每帧调用。
2024-08-23 15:41:07
484
原创 UPROPERTY(meta = (BindWidget))的含义
UPROPERTY中的标记的作用是将 C++ 类中的变量(widget成员变量)与蓝图中的UI 元素(widget元素)进行绑定(例如ButtonTextBlock等)。这个标记主要在的子类中使用,用于确保在蓝图中创建的控件能够在 C++ 中直接访问和操作,即实现二者相互绑定。BindWidget。
2024-08-23 12:23:29
543
原创 UE5中的UGameInstanceSubsystem
是 Unreal Engine 5 中的一种子系统(Subsystem),它是一个新功能,旨在提供一种模块化的、可管理的方式来添加和维护游戏的各种全局服务或功能。它是 的子系统,可以用于实现全局的、跨关卡的功能和服务。 是一个可以附加到 上的对象,它的生命周期和 一样长。这意味着它在游戏启动时创建,并在整个游戏生命周期内保持存在,直到游戏结束。全局访问:由于 的生命周期与 一样长,因此可以在整个游戏中随时访问。这使得它非常适合用于管理全局状态或服务,例如:模块化设计:子系统提供了一种模块化的方式来
2024-08-04 22:58:12
1656
原创 UEC++中的RTTI
**RTTI**(Runtime Type Information,运行时类型信息)是C++语言提供的一种机制,允许在程序运行时获取对象的**类型信息**,RTTI通常用于处理多态性、类型转换和类型检查。
2024-08-01 23:43:46
586
原创 UE5 C++ 材质类UMaterialInterface、UMaterialInstance
继承自UObject,是一个比较底层的材质类,从名字也能看出来,他是个接口类(但是并非虚基类),基本上它的作用就是多态。它非常适合需要在多个对象之间共享相同参数的情况。是一种材质实例,其参数在编辑器中设置,并在。它主要用于在不修改基础材质()的情况下,创建带有特定参数的。**示例:**在编辑器中创建。材质参数的材质实例。
2024-08-01 16:11:10
1021
原创 UE5C++中,NewObject<>()和CreateDefaultSubobject<>()的区别
NewObject()和CreateDefaultSubobject()的区别。
2024-07-24 10:59:38
1310
1
原创 std::vector容器,用operator[]和at方法进行元素访问的区别
std::vector容器,用operator[]和at方法进行元素访问的区别。
2024-07-17 15:32:53
429
原创 UE多人网络游戏中Actor的Network Role属性
多人网络游戏中,每个Actor都具有一个属性,。代码中的对应类型为ENetRole。AuthorityProxyAuthority属性通过Local Role和变量来跟踪,Local Role表示该Actor在本机上的权限属性,而Remote Role表示该Actor在远程服务器上的权限属性。UE默认采用的 server-authoritative模型,意味着,所有信息都会从服务器复制到客户端。因此基本可以这样说:服务器上的Actor的Local Role变量肯定为Authority,而在远程客户端上的。
2024-04-21 01:01:47
1229
原创 UE C++获取某个旋转状态(欧拉角表示)下的三个方向向量的方法
当想要获取某个轴(比如 X 轴)的方向向量时,可以直接从旋转矩阵中提取对应的列。可以直接理解成,对局部空间的x轴应用矩阵R,从而得到了世界空间中的方向向量结果。数学上,这些向量是通过旋转矩阵与原始坐标轴向量相乘得到的。其中,每一列实际上代表了旋转后的坐标轴在原始坐标系中的方向向量。实际上这个旋转矩阵乘以。
2024-04-19 16:28:53
585
1
原创 Vulkan中的SwapChain、FrameBuffer和RenderPass:概念理解及关系
实际上,imageView并没有直接存储图像数据,你可以将其比喻为一个"窗口",你可以透过这个窗口看到图像的一部分,同时指定这个窗口的属性,比如窗口的大小、位置等。SwapChain提供了可以呈现到屏幕上的图像和图像视图,FrameBuffer关联了这些图像视图,并指定了RenderPass,RenderPass定义了渲染操作的步骤和依赖关系。总体而言,framebuffer 的附件设置是根据你的渲染需求而定的,但通常会包括至少一个与 swapchain 相关的颜色附件。如果你有其他需要渲染的内容,例如。
2024-01-25 21:06:59
1897
原创 vulkan中的texture(VkImage、VkImageView、VkSampler、VkDeviceMemory)
在 Vulkan 中,对于很多对象(比如 VkBuffer 和 VkImage),数据存储和句柄是分离的,这为开发者提供了更多的灵活性。这样的设计允许你更精细地控制数据的存储位置、布局和访问权限。以便在着色器中进行纹理采样操作。
2024-01-23 19:28:46
1335
原创 vulkan中分配显存并拷贝数据的流程(vkBuffer、vkDeviceMemory的关系)以及VMA库介绍
设备内存对象(GPU显存),用于实际存储 Vulkan 缓冲区对象的数据。缓冲区需要分配显存后才能存储实际的数据,最后成功分配的显存块是通过。再次强调,它并不包含任何指向实际显存块的指针,只是一些信息。表示一个缓冲区对象,用于存储数据,比如顶点数据、索引数据等。函数将缓冲区对象和分配的设备内存关联起来,使得。函数从vkBuffer对象中获取缓冲区的内存。是两个不同的概念,但它们通常是一起。函数为缓冲区分配实际的设备内存(),并将该内存与缓冲区关联起来。对象,定义了缓冲区的。能够真正使用这块显存。
2024-01-17 17:11:30
2045
原创 $ git push ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from
解决方法一:改用HTTP协议(我没试过,应该是可以的)
2024-01-17 03:41:27
1382
1
原创 vulkan中从CPU到GPU传输数据,暂存缓冲区(staging buffer)的必要性
在使用诸如Vulkan、DirectX等现代图形API时,经常用于充当主机和GPU之间的桥梁,以进行高效的数据传输。要明确知道,staging buffer是。既然都是从CPU到GPU传输数据,为什么要先从CPU端拷贝到。(显存块)呢,这不很多余么?
2024-01-17 03:03:53
1589
5
原创 vulkan中的指令队列的大致原理
在vulkan中,指令池`vkCommandPool`分配指令缓冲`vkCommandBuffer`,而指令缓冲用于记录`计算、渲染指令`,记录完后,把该指令缓冲提交给指令队列`vkQueue`,然后等待执行。
2024-01-15 03:46:25
859
原创 C++17 inline静态变量,静态变量不用再类内定义类外初始化了
并且这个表达式还是constexpr,从而可以在编译时进行求值,提供更好的优化。然后再在其他任何.cpp文件中包含MyClass.h文件,使用。而在 C++17 引入的标准中,你可以直接在类中定义并初始化。这使得静态成员变量的定义和初始化。
2023-12-24 02:16:25
1042
原创 用VS Code修改源代码的编码格式
用VS Code打开一个编码格式为GB2312的源代码文件,中文部分显示为乱码。此时我们点击上面红框这个位置,命令面板弹出两个选项,选择。,选择你想保存的格式即可,这里我选择UTF-8。可以看到VS Code已经猜测出该文件就是。然后,这个文件里的中文部分就可以正常显示了。这是因为VS Code默认解码格式为。最后,再重新点击右下角的。编码的,这里我们选择。
2023-12-21 22:00:51
2626
原创 VS Code + MinGW 搭建 Windows C++开发环境以及如何简单根据CMake维护的项目生成.sln文件
这是Visual Stuidio(IDE)用的编译器,在VSCode中,如果选择MSVC作为编译器,结果就是生成一个对应VS版本的.sln解决方案,后面就不说了吧 用Visual Studio 2022 打开就行。必须掌握的技能,目前github上开源项目几乎都采用CMake来维护,不会使用则寸步难行,学会CMake之后,其他的构建工具都简简单单,比如Premake。,并指定调试相关配置属性,比如调试的目标可执行文件,调试采用的调试器路径等。,这是C/C++插件默认帮我们生成的,必须有这个文件才能编译。
2023-12-20 23:26:19
3609
原创 cmake中的configure_file() 和option()命令
cmake中的configure() 和option()命令的作用域问题。
2023-12-15 17:19:03
916
原创 【游戏引擎 - C#脚本系统】4、C++调用C#函数
,而该调用方法特定于你提供的方法签名,这意味着对于可以传递哪些参数没有歧义。那么,何时应该使用mono_runtime_invoke,何时应该使用非托管方法桩呢?这取决于情况。如果你在编译时(C++编译时)不知道方法的签名,那么你可能应该使用mono_runtime_invoke,尽管你也可以使用非托管方法桩,但通常你希望参数在编译时已知。
2023-12-07 00:25:49
1327
原创 【游戏引擎 - C#脚本系统】5、字段和属性(Fields & Properties)
翻译 from peter1745的《mono-guide》
2023-12-06 10:56:40
1359
原创 C++11 模板参数包(Parameter pack)
Template parameter pack(模板参数包)是C++中用于接受零个或多个模板参数的一种机制
2023-11-20 18:43:28
649
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人