不断学习,不断更新,有帮助记得点赞和收藏,查缺补漏
1.调用继承与EngineSubsystem的子系统
UMyEngineSubsystem* MyEngineSubsystem = GEngine->GetEngineSubsystem<UMyEngineSubsystem>();
这样获取
2.UE_LOG调用变量字符串
FString temp="temp";
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 *ActorComponent
4.UE中1单位为现实中的1厘米,100单位为1米
也就是说 一个物体在scale为(1,1,1)的情况下,坐标为(100,0,0)时,它距离原点(0,0,0)为1米(100厘米)
5.代码没问题,但编译不成功时
建议:
1.关掉实时代码编写
2.BUG报告不发送
3.不要自动保存
6.动态添加ActorComponent
//创建组件(NewObject,AddInstanceComponent,在【非构造函数】中使用)
UStaticMeshComponent* SMC = NewObject<UStaticMeshComponent>(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目标 传this
const FLatentActionInfo LatentInfo(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里不提示不报错对于小白来说很无赖,不确定是否需要引用、是否已默认包含引用、引用哪个,还是要多学习
#include "Components/AudioComponent.h"
9.远处物体看不清或有闪烁现象
可以调整屏幕百分比到150、200或更高,有明显的改善
预览窗口可以调整下图位置
发现有效果就可以在项目设置里设置,可以在播放窗口看到效果,虽然是在编辑器类别下的,但发布出来亲测有效果