Epic游戏开发问题
在使用Epic和Unreal Engine时会碰到各种软件的使用问题,这里是个Epic平台软件使用问题解决合集。若是对Unreal Engine游戏开发过程中出现的问题感兴趣,可以在上方搜索相关文章,或者看文章 5.3.2-error-collection。
Epic检测不到安装的Unreal Engine问题: 电脑本地已经安装了Unreal Engine,但是Epic的”Library库”中找不到相应的引擎。
解决办法:
找到本地的Unreal Engine所在地址,并将文件夹重命名,如”UE_5.3”改为”UE_5.3_old”。
在Epic中点击安装本地已有的引擎版本。
等待初始化问题显示安装中百分比后,选择停止安装后退出Epic(完全退出,包括关掉后台)。
找到新安装的引擎文件夹。
将原来的”UE_5.3_old”文件夹中的内容移到此文件夹中。
重新打开Epic,并选择继续安装,Epic便会搜索验证已安装过的UE文件夹,结束后便会显示正常了。
Epic新出的Fab安装Epic前段时间停止了之前的Quixel Bridge,改用了Fab,但官方文档对它的安装和使用没有详细的 ...
UE 5.3.2 错误解决合集
在跟随Udemy课程《Unreal Engine 5 C++ The Ultimate Game Developer Course》的过程中,碰到了各种因为UE本身或者版本问题导致即使步骤一致,但执行一直出错的情况,遂列举出来,希望对同样碰到这些问题的伙伴有所帮助。
Build报错 “BuildGraph.Automation.csproj” – FAILED等
Tick 失效每帧无改变
Build报错function override error
Build报错 “BuildGraph.Automation.csproj” – FAILED等在升级完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 proj ...
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 << " ...
SFML C++ 项目
项目简介
项目Setup
项目代码
项目简介这是一个跟着COMP4300的课程记录制作的项目,因不公开提供代码资料,所以我自己整理了一份方便其他人使用,放在网页上的代码和文档都test过,请放心使用。
这个项目利用SFML来制作一个含有各种图形四处悬动的窗口,示例如下:
要求从config.txt文件中读取窗口大小,生成要求的图形(positionX, positionY, speedX, speedY, r, g, b, (height, width) or radius),图形需要根据自身的速度在窗口中移动,当碰到边框时进行反弹(速度变成相反的),图形需要在正中间显示图形名字:12345678Window 1280 720Font fonts/KillerTech.ttf 36 128 128 255Circle CGreen 100 100 -3 2 0 255 0 50Circle CBlue 200 200 2 4 0 0 255 100Circle CPurple 300 300 -2 -1 255 0 255 75Rectangle RRed 200 200 4 4 ...
函数指针
函数指针是指向函数的指针,跟指向变量的指针没差。
函数的一个属性就是其地址指明了函数体在内存中的位置,在调用函数时,系统将控制权给这个位置来执行函数。
用一个函数来举例
1234double f(double x){ return 2*x;}
这里,f是指向函数f()的指针,*f()是函数本身, (*f)(7)是调用这个函数并取得值,其本质跟f(7)没有任何差别,只是在大多数编程语言中(包括 C 和 C++),编译器会自动理解f是一个函数指针并进行适当的解引用。
函数指针一般在需要函数作为一个变量的时候起到作用,即函数作为参数传递,如当要求n到m之间用函数f的总和时:12345678double sum(double (*f)(double), int n, int m){ double result = 0; for (int i = n; i <= m ; ++i) result += f(i); return result}
这里,double (*f)(double)是指f为指向一个返回 ...