离线本地Unreal Engine文档
Unreal Engine的官方文档,一方面服务器太慢,一方面本地的文档打开就是没有渲染过的html,看起来实在太过难受,而且index中的链接都显示查无此文档,十分不方便,于是找到了建立本地文档库的方法,达到在本地跟官方服务器上阅读、搜索文档一样的效果。
docset-unreal-engine工具生成了Unreal Engine文档的docset,后用Zeal软件打开阅读,以下为具体步骤。
将本地官方文档生成docset1. 找到官方文档所在地当你下载了虚幻引擎Unreal Engine之后,本地是自带官方文档zip文件的,路径为:1234<UnrealEngine Installed Path>\Engine\Documentation\Builds这是我自己的路径以供参考D:\App\UnrealEngine Machines\UE_5.3\Engine\Documentation\Builds
这个路径下面有俩个zip文件:
BlueprintAPI-HTML.tgz (蓝图文档)
CppAPI-HTML.tgz (C++文档)
2. 用docset-unre ...
UE Niagara特效记录
这里是Unreal Engine的Niagara特效笔记记录。
OperationsChange to GPU SimIn Niagara System object -> Select “Properties” -> Sim Target -> Select “GPUCompute Sim”
UE 5.3.2 知识记录
这里记载了UE中常用的知识和编码笔记。
C++ 编码
Exposing C++ inherited vars \& funcs to Blueprint
Template Function
Components in C++
Pawn class in C++
Unreal Engine Blueprint
Target Effects
Damped Effect
Circular Movements
UE Basic Knowledge
HEADS UP!
Components
Unreal Property System (Reflection System)
Enhanced Input
UE Basic Operations
UE Self-study resources 自学资料
C++ 编码Exposing C++ inherited vars & funcs to BlueprintExposing Variable to Blueprint using UPROPERTY(), 这样可以在编辑器中更快地在蓝图中修改调试。12345678 ...
UE 5.3.2 错误解决合集
在跟随Udemy课程《Unreal Engine 5 C++ The Ultimate Game Developer Course》的过程中,碰到了各种因为UE本身或者版本问题导致即使步骤一致,但执行一直出错的情况,遂列举出来,希望对同样碰到这些问题的伙伴有所帮助。
Tick 失效每帧无改变
Build报错function override error
Tick 失效每帧无改变在课程中原本代码为PrimaryActorTick.bCanEverTick = true;但这个并没用,即使更改了 void AItem::Tick(float DeltaTime)函数,里面的内容在UE运行后没有任何显示。应该更改的是bStartWithTickEnabled参数:12345678910111213141516AItem::AItem(){ // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. / ...
AI论文阅读记录
AI论文记录
Thread的join函数方法
当在多线程任务中,你需要等待一个线程结束后再进行操作,就可以用thread.joinable()来确保它正在运行,同时用thread.join()来等待线程结束并清理它的资源(这个会block跑这个函数的进程/线程,在这里就是会block这个stopThread函数的进程/线程),例子如下:12345678910#include <thread>int stopThread(){ // assume threre is a running thread threadA if (threadA.joinable()) // check if threadA is running { threadA.join(); // join threadA. It waits and blocks the calling thread and waits until threadA finishes. It will also clear all the resourses used by threadA in the end. ...
5.3.2 UE build报错
在升级完Unreal Engine到版本5.3.2之后,发现即使用UE自带的空Actor Class进行编译都有俩项如下报错:123========== Build: 46 succeeded, 2 failed, 0 up-to-date, 1 skipped ==========Done building project “BuildGraph.Automation.csproj” – FAILED.Done building project “AutomationScripts.Automation.csproj” – FAILED.
解决办法为修改UE的源文件:
找到安装Unreal Engine Machine的文件夹,我的是D:\App\UnrealEngine Machines\UE_5.3\
到Engine\Source\Programs\AutomationTool\BuildGraph\BgScriptReader.cs中将1640行改为:12 if (users != null)report.NotifyUsers.UnionWith(users);
到Engi ...
DFS和BFS
特征
DFS
BFS
数据结构
stack
queue
储存空间
只用储存一条路的数值,所以跟高度或者路的长度有关 O(h),使用空间较少
每次储存一层的数值,所以是指数增长 O(2^h),使用空间较多
常用场景
不具有最短性
因为是一层一层地搜索,所以可以最快搜索到最短路径(特别是权重为1的时候)
深度优先搜索 DFS一条路一直搜索下去,然后后退。
题目例子:排列数字
给一个数n,将1~n排成一排,按字典顺序输出所有的排列方法。
12345678Input: 3Output:1 2 31 3 22 1 32 3 13 1 23 2 1
DFS代码:123456789101112131415161718192021222324252627282930313233343536373839#include <iostream>#include <vector>using namespace std;const int N = 10;int n;int path[N];bool used[N];void dfs(int level) ...
C++面试准备
这里是自己搜罗准备的C++面试八股文常用题目,持续更新。
Static关键字作用
基本概念
静态数据成员
静态成员函数
Extern关键字作用
指针和引用
动态库和静态库的区别
虚函数和纯虚函数的区别
虚函数
纯虚函数
友元的应用
友元函数
友元类
BFS与DFS的实现
BFS Bread-First Search 广度优先搜索
DFS
STL常用容器和算法
List和Set
红黑树
二叉搜索数
HashMap的原理
堆和栈的区别
如何解决死锁
Static关键字作用基本概念
使用目的:
在 C++ 中,需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见时,可将其定义为静态数据。
存放位置
DATA 段(全局初始化区)存放初始化的全局变量和静态变量;BSS 段(全局未初始化区)存放未初始化的全局变量和静态变量。其中BBS段在程序执行之前会被系统自动清0,所以未初始化的全局变量和静态变量在程序执行之前已经为0。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。
使用 ...
C++常用设计模式
工厂模式(Factory)简单工厂只有一个工厂,即一个类负责创建不同类的实例。通常使用static静态方法来创建对象,不需要传递工厂类来创建实例。
优点:
单一工厂类,实现简单
缺点:
扩展性差,添加新类,新产品时,需要修改工厂类代码
代码实现:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include <iostream>using namespace std;class Car{public: virtual void drive() = 0; // 创建纯虚函数,让每个子类实现 virtual ~Car() {} // 析构虚函数,保证子类析构时能正确调用子类析构函数};class BydCar : public Car{public: void drive() override { cout << " ...