不断学习不断更新有帮助记得点赞和收藏查缺补漏1.调用继承与EngineSubsystem的子系统UMyEngineSubsystem*MyEngineSubsystemGEngine-GetEngineSubsystemUMyEngineSubsystem();这样获取2.UE_LOG调用变量字符串FString temptemp;UE_LOG(LogTemp,Warning,TEXT(%s),*temp);3.闪退后错误代码1闪退后错误代码Object(const FObjectInitializer) constructor called but it’s not the object that’s currently being constructed with NewObject. Maybe you are trying to construct it on the stack, which is not supported.原因在C脚本中有声明Actor或ActorComponent等对象初始化错误。解决声明是使用指针 *Actor *ActorComponent4.UE中1单位为现实中的1厘米100单位为1米也就是说 一个物体在scale为111的情况下坐标为10000时它距离原点000为1米100厘米5.代码没问题但编译不成功时建议1.关掉实时代码编写2.BUG报告不发送3.不要自动保存6.动态添加ActorComponent//创建组件NewObjectAddInstanceComponent在【非构造函数】中使用UStaticMeshComponent*SMCNewObjectUStaticMeshComponent(ActorIN);//NewObject在UE里相当于new关键字//实际上NewObject的参数传别的非空指针也行他只是给new出来的新东西挂一个引用以保证它不会被UE的GC当成没有引用的垃圾回收掉并不影响它挂到哪里SMC-SetStaticMesh(MeshIN);SMC-RegisterComponent();//这行最关键没了这行渲染效果就不会显示。看了下源码大概是在场景里对需要处理的物体做了些注册什么的ActorIN-AddInstanceComponent(SMC);//不要用其他的几个API否则要不没效果要不UE会崩7.延迟执行方法 (Delay)// LatentInfo,// Param1 : Linkage 默认给0// Param2 : UUID 给个独一无二的编码即可 FMath::Rand() 或者给时间戳转Fstring 类名 也可保证唯一性// Param3 : ExecutionFunction 要执行的方法名 用TEXT宏转一下// Param4 : CallbackTarget 回调传入的UObject目标 传thisconstFLatentActionInfoLatentInfo(0,FMath::Rand(),TEXT(DelayFinish),this);// Delay X秒后延迟后执行DelayFinish方法UKismetSystemLibrary::Delay(this,25.0f,LatentInfo);记得在.h的DelayFinish方法添加UFUNCTION(BlueprintCallable, Category “MyCategory”)8.无法编译报错提示使用了未定义类型“UAudioComponent”问题VS中无报错UE编辑器无法编译报错提示使用了未定义类型“UAudioComponent”解决添加头文件这个VS里不提示不报错对于小白来说很无赖不确定是否需要引用、是否已默认包含引用、引用哪个还是要多学习#includeComponents/AudioComponent.h9.远处物体看不清或有闪烁现象可以调整屏幕百分比到150、200或更高有明显的改善预览窗口可以调整下图位置发现有效果就可以在项目设置里设置可以在播放窗口看到效果虽然是在编辑器类别下的但发布出来亲测有效果10.配置文件发布后未正常使用问题配置文件项目名称\Config\配置文件.ini在编辑器中正常使用发布后不在项目名称\Config文件夹里解决未做相应的特殊设置使配置文件.ini打包在包体内部未暴露在外边需要1.在项目名称\Config\DefaultGame.ini中添加一行让项目中读取配置文件.ini的路径定位在外部[Staging]DisallowedConfigFiles项目名称/Config/配置文件.ini2.在项目名称.Build.cs中添加一行RuntimeDependencies.Add(Path.Combine(ModuleDirectory,../../Config,配置文件.ini));11.c判断材质接口是否为材质实例#includeMaterials/MaterialInterface.h// 假设你有一个指向 UMaterialInterface 的指针UMaterialInterface*MaterialInterface/* 你的材质接口 */;// 检查是否是 UMaterialInstance 的实例if(MaterialInterface-IsA(UMaterialInstance::StaticClass())){UE_LOG(LogTemp,Log,TEXT(MaterialInterface is a UMaterialInstance.));}else{UE_LOG(LogTemp,Log,TEXT(MaterialInterface is not a UMaterialInstance.));}12.编辑器控件如何获取map中选择的actor13.编辑器控件如何获取选择的资源14.nDisplay选择Mesh时打包黑屏的问题为了将静态网格体用于输出重新映射必须为该静态网格体启用 允许CPUAccessAllow CPUAccess 。为此请执行以下操作在 内容浏览器Content Browser 中双击该静态网格体以在 静态网格体编辑器Static Mesh Editor 中将其打开。在 细节Details 面板中展开 一般设置General Settings 高级Advanced 。启用 允许CPUAccessAllow CPUAccess 。保存静态网格体资产以保留你的更改。15.委托事件使用AddLambda的绑定方式时取消绑定失败#includeMyClass.hvoidAMyOtherClass::BindToMyEvent(AMyClass*MyClassInstance){if(MyClassInstance){// 使用 Lambda 表达式绑定并保存委托的句柄DelegateHandleMyClassInstance-MyEvent.AddLambda([this](Param1Type Param1,Param2Type Param2,Param3Type Param3){// 处理事件this-HandleEvent(Param1,Param2,Param3);});}}voidAMyOtherClass::UnbindFromMyEvent(){//错误解绑Lambda 表达式MyEvent.RemoveAll(this);//正确解绑Lambda 表达式if(DelegateHandle.IsValid()){// 解绑 Lambda 表达式MyEvent.Remove(DelegateHandle);DelegateHandle.Reset();}}16.Mesh设置LOD时看不到效果时尝试把mesh的Nanite去掉试试17.vs中出现了红色波浪线环境没有错代码语法也没有错程序可正常运行但是程序在vs中出现了红色波浪线。问题解决项目-重新扫描解决方案18.Unreal中针对Instance物体获取位置19.HISM中ObjectPosition和ObjectRadius不能用的问题换成ISM就可以用了改ObjectRadius ISM也不能用20.打包报错Ensure condition failed: Component-HasBegunPlay()21.当红色等亮色像素周围出现绿色或其他像素点查看下锐化设置22.加载pak包查找蓝图时别忘了蓝图名称后加上_C在运行时加载蓝图类必须使用它的运行时类标识符 _C。错误示例TEXT(“/Game/Test/bp_base.bp_base”) 或 TEXT(“/Game/Test/bp_base”)正确示例TEXT(“/Game/Test/bp_base.bp_base_C”) 或 TEXT(“Blueprint’/Game/Test/bp_base.bp_base_C’”)这是因为蓝图在编辑器中是“蓝图资产”.uasset但被“烹饪”(Cook)用于游戏运行时它会生成一个真正的UObject类名称会自动加上_C后缀。所以加载时需要通过 _C 来找到这个运行时类。23.在编辑器未play的时候动态设置视口摄像机位置24.当蓝图或其他文件在UE编辑器中删除或改名时发现文件夹中文件并未删除问题重定向下后问题解决