当前位置:   article > 正文

UE5修改缓存路径_ue5更改缓存路径

ue5更改缓存路径

UE5修改缓存路径

同样适用于UE4

注意

刚下载好UE5引擎第一次运行(创建C++类工程)的时候先不要修改缓存,先运行一次(创建C++类工程),后面再更改缓存,否则会出错!!!

修改缓存路径步骤

查找(Ctrl+F)	InstalledDerivedDataBackendGraph
  • 1

改为:

将:%ENGINEVERSIONAGNOSTICUSERDIR%DerivedDataCache

改为:%GAMEDIR%DerivedDataCache
  • 1
  • 2
  • 3

UE5使用注意

问题1

虚幻编辑器或者VS2019打不开解决办法

如果用UE5/UE4打开项目的时候打不开虚幻编辑器或者VS2019,只要安装下面两个程序即可解决

问题2

自己初学UE4时遇到的新建项目时无法打开编译器的解决方法

安装环境:

WIN10系统中分别安装了VS2017和UE4.18.3

问题概述:

解决方法:

1.打开VS2017的安装版本,点修改.

3.在单个组件中勾选游戏和图形下的"Unreal Engine 安装程序"

4.点击修改.等待安装完成后解决问题

VS2017 incredibuild 中的一个文件 与UE中的文件重名了。
打开 VS installer 把incredibuild卸载掉就好了。
  • 1
  • 2

UE4创建c++项目编译失败

直接下载安装ue4,ue4版本 4.26.1创建c++空项目到67%,编译失败

到这就完啦,不能直接打开。错误代码网上查询仿佛是虚拟内存不够

解决

这是因为我的项目里面含有中文,把中文字符改了就好了

【UE4 C++】迁移项目由于引擎位置或版本不同VS无法编译的解决办法

由于从不同主机迁移过来的项目,可能因为引擎位置或版本不同而造成代码无法编译,找不到文件等问题。

那么,我们可以通过修改 .vcxproj 中的版本与路径解决该问题。

找到该路径YourProject\Intermediate\ProjectFiles下的 YourProject.vcxproj文件

使用记事本打开,进行 编辑->替换 进行如下更改

原路径 C:\Program Files\Epic Games\UE_4.17
现路径 H:\UE4\Epic Games\UE_4.19

重新打开VS项目即可成功生成

1.蓝图工程创建C++脚本生成C++文件出错

原文链接:https://blog.csdn.net/qq_24835213/article/details/80081355

OutputLog:

ERROR:e:\project_ue4\*********\Intermediate\Source\VR_Zombie_GearVR.Target.cs(6,14) : error CS0101: ?????ռ䡰<ȫ???????ռ?>???Ѿ??????ˡ?VR_Zombie_GearVRTarget???Ķ???

ERROR: UnrealBuildTool Exception: Unable to compile source files.
  • 1
  • 2
  • 3

解决方案:删除Intermediate文件夹再创建一遍即可

2.c++编译报错:"Expected xxxxxxxx.h to be first header included”

将xxxx.h头文件放在第一个引用

3.c++退出游戏API

FGenericPlatformMisc::RequestExit(false);

4.VS rebuild工程(或者是打包时选了FullRebuild)报错

原因:VS的rebuild和ue4的有冲突,会导致误删插件中的文件

解决方法:将缺少的文件从SDK插件中拷贝一份放在对应位置即可打包成功

5.开发小米VR一体机遇到一个坑爹的问题

在上传时报这样的错误

也就是Opengl ES版本需要3.0以上

但是项目中确实用的是ES3.1,androidManifest里面却显示的是2.0

小米插件中提供了修改androidManifest的方法,在MiVRHMD_APL.xml

的标签中加入如下字段

即可!

6.项目拷贝到其他电脑识别不到ue4目录:

右键项目重新生成sln项目即可。

7.通过反射来以名字查找更改Ustruct成员值

void UPP_ToolBluePrintFunctoin::GetSetParameter(UObject * ObjectWithPara,const FName & Parameter_name, const float Intensity, UObject* & OutActor)
{
//OutActors.Reset();
APostProcessVolume* PP_Outer;
FName PropName = FName(“Settings”);
FName MemberName = Parameter_name;
float NewValue = Intensity;
struct FPostProcessSettings MyPPSettings;
PP_Outer = Cast(ObjectWithPara);
// Get property representing struct
UProperty * Prop = PP_Outer->GetClass()->FindPropertyByName(PropName);
// Ensure Object actually has a special member
if (Prop)
{

	 // Get struct address
	 void * StructAddress = Prop->ContainerPtrToValuePtr<void>(PP_Outer);
	 // Ensure the parameter is special parameter
	 if (UStructProperty * StructProp = Cast<UStructProperty>(Prop))
	 {
		 
		 // We'll get struct properties through a UScriptStruct, not a UObject
		 // ScriptStructs are just templates and don't hold any of your data
		 UScriptStruct * ScriptStruct = StructProp->Struct;
		 FPostProcessSettings MyPPSettings;
		 
		 // Get  need property
		 UProperty * ChildProp = ScriptStruct->FindPropertyByName(MemberName);
		 // Cast to FloatProperty
		 if (UFloatProperty *  ChildFloatProp = Cast<UFloatProperty >(ChildProp))
		 {
				 PP_Outer->CanEditChange(ChildFloatProp);
				 //not work 
				/*
			ChildFloatProp->SetFloatingPointPropertyValue(StructAddress, NewValue);*/
				 ChildFloatProp->SetPropertyValue_InContainer(StructAddress, NewValue);
		 }
		OutActor = PP_Outer;
	}	 
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

}
其中

UProperty * Prop = PP_Outer->GetClass()->FindPropertyByName(PropName);

通过名字查找到了Uobject包含的settings Uproperty

void * StructAddress = Prop->ContainerPtrToValuePtr(PP_Outer);

拿到settings Uproperty 地址的指针

UStructProperty * StructProp = Cast(Prop)

确保指针指向的是一个UStructProperty

UScriptStruct * ScriptStruct = StructProp->Struct;

得到UStructProperty的抽象定义

UProperty * ChildProp = ScriptStruct->FindPropertyByName(MemberName);

通过名字找到UStructProperty定义下包含的一个UProperty

UFloatProperty * ChildFloatProp = Cast(ChildProp)

确保ChildProp 是一个浮点类型的UProperty

PP_Outer->CanEditChange(ChildFloatProp);

该方法确保了APostProcessVolume里面的settings成员下的名为MemberName的UProperty 值改变起作用

ChildFloatProp->SetFloatingPointPropertyValue(StructAddress, NewValue);

该方法经测试只能更改UProperty 初始化时的值,在runtime不起作用

ChildFloatProp->SetPropertyValue_InContainer(StructAddress, NewValue);

该方法经测试可以在runtime实时改变UProperty 的值(StructAddress一定要指向要更改的Ustruct地址)

总结:

反射作为ue4魔改C++的一项功能,在编程过程中给我们提供了很大的便利,但是如果不能透彻理解它的真正含义,很容易在使用过程中给自己造成不必要的麻烦。另外现在获取更改UProperty 的值还限制在UBoolProperty、UEnumProperty、UNumericProperty、UObjectProperty、UArrayProperty、UStructProperty这几种。其中数字属性类, 其子类有 int32, int64, uint32, uint64, float, double等其它具体类型数字的属性类。我想要get/set Vector4类型的UProperty 还依然解决不了。可能对ue4反射还是不够了解。

补充:

get/set Vector4类型的UProperty可用以下代码实现:

			 FVector4 * Vector4Address = ChildProp->ContainerPtrToValuePtr<FVector4>(StructAddress);
			 Vector4Address->X = NewValue;
			 Vector4Address->Y = NewValue;
			 Vector4Address->Z = NewValue;
			 Vector4Address->W = NewValue;
  • 1
  • 2
  • 3
  • 4
  • 5

通过上面的方法基本上可以实现对任意类型的UProperty进行Set/Get.但是在对与UE4自带的bool类型有点问题:

UProperty * ChildProp_b = ScriptStruct->FindPropertyByName(bOverrideName);
uint32 *ChildBoolProp = ChildProp_b->ContainerPtrToValuePtr(StructAddress);
bool(ChildBoolProp) = true;
bool(ChildBoolProp) = true;

这段代码是有问题的,编译不会通过!

我发现UE4为了节省内存,将float类型以Uint32位域格式进行存储,使我在set的过程中出现了问题,如果以指针来Set

*ChildBoolProp = true;

会造成内存错乱,影响到其他相邻属性的值,这一块我还有一些疑惑,有待解决。。。。

引起错乱的原因:位域不支持指针和引用,最好是强转成bool类型再set值。

参考:https://answers.unrealengine.com/questions/711071/setting-value-of-uproperty.html

https://answers.unrealengine.com/questions/212756/setget-uproperty-inside-of-ustruct-directly.html?sort=oldest

https://answers.unrealengine.com/questions/296180/cant-set-uproperty-reflection-in-c-why.html?sort=oldest

https://www.jianshu.com/p/2c33860da041

8.更改ue4版本编译报错All source files in module XXXXXX must include the same precompiled header first

解决方法:将这行代码加入到build.cs中
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

系统 是win10 ,UE4 4.25 ,vs 2019

创建蓝图没问题,创建C++项目报错:error CS0042 ERROR: Unable to compile source files.
网上搜了大半天,各种方式都试了,不好使

后来打算咬牙重装4.25引擎,装之前设置了一下

C:\Program Files(x86)\Epic Games\UE_4.25\Engine\Intermediate\Build\BuildRules 
  • 1

文件夹的用户权限
属性–>安全,编辑 Users权限,完全控制。
莫名好用了。
记录一下,有碰到这个问题的可以试一下。

问题3

UE4 虚幻4 C++项目Complile Failed问题的解决方法

这个问题是因为本机缺少编译器,只用自己配置一下编译器的位置就好了

第一步:自己在任意的文件夹下面新建个bin文件夹,里面再创建一个amd64文件夹

第二步:打开自己的vs的安装地址的

\VC\Tools\MSVC\14.11.25503\bin\Hostx64\x64
  • 1

目录下,把东西复制一份进bin文件夹,再复制一份进amd64文件

第三步:打开注册表

win+R

Regedit 
  • 1
  • 2
  • 3
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7
  • 1

将14.0的键值修改成你的bin文件夹的父目录

第四步:重启你的UE4就OK了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/484638
推荐阅读
相关标签
  

闽ICP备14008679号