cesium126,230420,程序运行时动态加载本地倾斜摄影:使用 C++ 编程
(134)老师的教导:



(135)从 UE 的菜单里引入 C++ 类,扩充与定义新的 C++ 类 :

++

++ 对应于文件夹中的位置 :

++头文件的内容 :

++ 源文件中的内容 :

(136)增加代码后的 C++ 类文件 :

++对应的源代码 :
MyBlueprintFunctionLibrary.h// Copyright 2020-2021 CesiumGS, Inc. and Contributors#pragma once#include "HAL/PlatformFilemanager.h"
#include "Misc/FileHelper.h"
#include "Misc/Paths.h"
#include "Developer/DesktopPlatform/Public/DesktopPlatformModule.h"
#include "Developer/DesktopPlatform/Public/IDesktopPlatform.h"
#include "Runtime/Core/Public/HAL/FileManagerGeneric.h"#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"/****/
UCLASS()
class CESIUMFORUNREALSAMPLES_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()UFUNCTION(BlueprintCallable, DisplayName = "OpenFile", Category = "File")
static TArray<FString> OpenFile();};
(137) 源文件的扩充 :

++源代码 :
MyBlueprintFunctionLibrary.cpp// Copyright 2020-2021 CesiumGS, Inc. and Contributors#include "MyBlueprintFunctionLibrary.h"TArray<FString> UMyBlueprintFunctionLibrary::OpenFile()
{
TArray<FString> FilePath; //选择文件路径
FString fileType = TEXT("*.json"); //过滤文件类型
FString defaultPath = FPaths::ConvertRelativePathToFull(FPaths::ProjectDir()); //文件选择窗口默认开启路径
IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get();
bool bSuccess = DesktopPlatform->OpenFileDialog(nullptr, TEXT("打开文件"), defaultPath, TEXT(""), *fileType, EFileDialogFlags::None, FilePath);for (auto& name : FilePath)
{
UE_LOG(LogTemp, Warning,
TEXT("%s"), *name);
}
if (bSuccess)
{
//文件选择成功,文件路径 path
UE_LOG(LogTemp, Warning, TEXT("Success"));
}
return FilePath;
}
(138)重新编译引入了新代码的 C++ 项目 :

++ UE 环境里也多了这么一个文件 :

(139)在接下来的 UE 编程里,先加载本地 3DTiles, 并把 geoRefer 与相机挪过去。然后尝试动态加载,环境也搭建好了 :

++接着,老师又做了屏幕按钮,算了,这里以关卡蓝图里的键盘事件代替得了 。
++测试咱们的自定义 C++ 类 :

++蓝图的最终版本 :

(140)效果,终于从 vs2022 编译成功了 UE 项目 :

(141)
谢谢
