2023-06-29 11:55:02 +08:00

65 lines
1.7 KiB
Markdown

---
title: UE5 C++技巧
date: 2022-12-09 17:02:14
excerpt:
tags: c++
rating: ⭐
---
## 取得默认值
```c++
GetDefault<ULyraDeveloperSettings>()->OnPlayInEditorStarted();
GetDefault<ULyraPlatformEmulationSettings>()->OnPlayInEditorStarted();
GetMutableDefault<UContentBrowserSettings>()->SetDisplayPluginFolders(true);
```
## 模块操作
```c++
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>("AssetRegistry");
if (AssetRegistryModule.Get().IsLoadingAssets())
{
if (bInteractive)
{
FMessageDialog::Open(EAppMsgType::Ok, LOCTEXT("DiscoveringAssets", "Still discovering assets. Try again once it is complete."));
}
else
{
UE_LOG(LogLyraEditor, Display, TEXT("Could not run ValidateCheckedOutContent because asset discovery was still being done."));
}
return;
}
```
### 加载动态链接库
```
{
auto dllName = TEXT("assimp-vc141-mt.dll");
#if WITH_VRM4U_ASSIMP_DEBUG
dllName = TEXT("assimp-vc141-mtd.dll");
#endif
{
FString AbsPath = IPluginManager::Get().FindPlugin("VRM4U")->GetBaseDir() / TEXT("ThirdParty/assimp/bin/x64");
//FPlatformProcess::AddDllDirectory(*AbsPath);
assimpDllHandle = FPlatformProcess::GetDllHandle(*(AbsPath / dllName));
}
}
```
## UE4显示MessageBox
struct CORE_API FMessageDialog
```
FMessageDialog::Open(EAppMsgType::Ok, LOCTEXT("DiscoveringAssets", "Still discovering assets. Try again once it is complete."));
```
## ref
c++ 中ref关键字的应用
ref()方法的返回值是reference_wrapper类型,这个类的源码大概的意思就是维持一个指针,并且重载操作符。
## 版本兼容
```
#if UE_VERSION_OLDER_THAN(4,24,0)
#endif
#if UE_VERSION_OLDER_THAN(5,0,0)
#endif
```