反正记不住
1.获取世界UWorld
1 UWorld* World = GEngine->GetWorldFromContextObjectChecked(GetOuter()); //GetOuter()返回该对象所在的UObject
2.判断是在游戏模式下运行(Game、PIE)
if (GWorld->IsGameWorld()) { // 在游戏模式下运行 } ************************************************************ if (GEngine->GetWorld()->IsPlayInEditor()) { // 在PIE模式下运行 } else { // 在Game模式下运行 }
3.类型转换Cast
1 1.ASGameMode* MyGameMode = Cast<ASGameMode>(GetWorld()->GetAuthGameMode()); //GetWorld()->GetAuthGameMode();获取当前游戏模式 2 2.return (T*)Ret; //把类 Ret 转换成 T
4.获取游戏模式GameMode
1 /**在 World.h 中: 2 * Returns the current Game Mode instance, which is always valid during gameplay on the server. 3 * This will only return a valid pointer on the server. Will always return null on a client. 4 */ 5 AGameModeBase* GetAuthGameMode() const { return AuthorityGameMode; } 6 7 应用: 8 ASGameMode* MyGameMode = Cast<ASGameMode>(GetWorld()->GetAuthGameMode());
5.定时器
FTimerHandle Handle; GWorld->GetTimerManager().SetTimer(Handle, this,&UMaJaComponent::ShakeLoop,0.1f,true); Lambda表达式写法 GWorld->GetTimerManager().SetTimer(Handle, [=]() {...代码区},1.0f,false);
6.使用延时
1 FPlatformProcess::Sleep(0.03) //include "Runnable.h"
7.c++中引用蓝图资源
这是第三人称模板里的构造函数之一 AHaingGamgGameMode::AHaingGamgGameMode() { // set default pawn class to our Blueprinted character static ConstructorHelpers::FClassFinder<APawn> PlayerPawnBPClass(TEXT("/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter")); if (PlayerPawnBPClass.Class != NULL) { DefaultPawnClass = PlayerPawnBPClass.Class; } }
8.获取游戏屏幕大小
1 #includ "GEngine.h" 2 3 FVector2D SSlAiMeunHUDWidget::GetViewportSize() const 4 { 5 FVector2D Result(1920,1080); 6 if (GEngine && GEngine->GameViewport) 7 { 8 GEngine->GameViewport->GetViewportSize(Result); //参数是引用 9 } 10 return Result; 11 }
9.const FString常量字符串
1 const static FString PassCode; 2 第一:static修饰的 需要静态的初始化值,由于是const修饰的常量,初始化也要用const修饰 3 const FString ULockCodeSG::PassCode = FApp::GetProjectName(); 4 第二:const 修饰的参数不能参与反射 5 会提示 Const properties are not supported.不支持Const属性。
10.获取项目的项目名称
1 FApp::GetProjectName(); 2 蓝图不知道,C++可以这样获取
11.UE使用windows.h头文件加入方法
1 #include "Windows/AllowWindowsPlatformTypes.h" 2 #include "Windows/PreWindowsApi.h" // 好像UE5不需要这个了 3 //此处写要调用的windows的头文件 4 #include "Windows/PostWindowsApi.h" //好像UE5不需要这个了 5 #include "Windows/HideWindowsPlatformTypes.h"
12.C++内添加组件
1 .h 2 UPROPERTY() //想在蓝图获取就要反射,不然无法从组件窗口拖到蓝图窗口 3 UAudioComponent* AudioComponent; 4 static FName AudioComponentName; 5 6 .cpp 7 FName AActorT::AudioComponentName(TEXT("AudioComponent")); 8 AudioComponent = CreateDefaultSubobject<UAudioComponent>(AudioComponentName);
13.设置运行窗口大小
1 //窗口尺寸 2 r.setres 1920x1080w 3 //分辨率 4 r.setres 1920x1080f
调用 UKismetSystemLibrary::ExecuteConsoleCommand()
14.以UObject作为函数库使用
思维误区,每次写函数库都继承的是“蓝图函数库类”(不记得叫啥了) 其实如果把行常用函数写到Actor内,这个Actor不就是一个函数库了吗? 同理UObject比Actor更适合这样子。那么只需要在这个UObject类中写一个static方法创建这个类即可。1 class XXX_API UXXXLibrary : public UObject 2 { 3 public: 4 UFUNCTION(BlueprintCallable) 5 static UXXXLibrary* CreateXXXLibrary()
{
return NewUObject<UXXXLibrary>();
} 6 }
15.引擎版本号获取( 条件编译技术)
1 ENGINE_MAJOR_VERSION 引擎主版本 4.26中的4ENGINE_MINOR_VERSION 引擎次版本 4.26中的26 2 3 #if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION <= 25 4 //如果主版本为4,次版本<=25 即4.25及以前的版本 5 #else 6 //4.25之后的版本 7 #endif
16.读取本地文件
1 本地文件都是以二进制数据存放在本地的, 2 FString FilePath = FPaths::ProjectSavedDir() + TEXT("image.jpg"); 3 TArray<unit8> Content; 4 FFileHelper::LoadFileToArray(Content, *FilePath) 5 主要方法就是FFileHelper::LoadFileToArray
17.
标签:常用,UObject,return,示例,代码,static,const,include,GEngine From: https://www.cnblogs.com/fuhaiqing/p/17361009.html