TSubclassOf
时间: 2024-06-22 14:02:27 浏览: 83
`TSubclassOf`是Delphi或Object Pascal(包括Free Pascal)中用于类型安全地检查对象是否属于指定类的机制。它是一个预定义的类型比较操作符,通常用在方法重写和事件处理中,以确保子类对象能正确地替换基类对象。
当你在某个方法或事件处理器中使用`TSubclassOf`时,它会检查当前处理的对象是否是给定基类或其子类的一个实例。例如:
```pascal
if TSubclassOf<DerivedClass>(MyObject) then
begin
// MyObject是DerivedClass的实例或其派生类的实例,可以进行特定于DerivedClass的操作
end;
```
相关问题
TSharedPtr< SWindow > LoginWindow = SNew(SWindow) .Title(LOCTEXT("FcLoginWindow", "登录")) .ClientSize(FVector2D(1000.f, 700.f)) .SupportsMaximize(true) .SupportsMinimize(true); // 是UEditorUtilityWidget if (Blueprint->GeneratedClass->IsChildOf(UEditorUtilityWidget::StaticClass())) { /*UE_LOG(LogTemp, Display, TEXT("开始设置登录窗口内容"));*/ // Get world for editor UWorld* World = GEditor->GetEditorWorldContext().World(); const TSubclassOf<UEditorUtilityWidget> WidgetClass = Blueprint->GeneratedClass; UEditorUtilityWidget* CreatedUMGWidget = CreateWidget<UEditorUtilityWidget>(World, WidgetClass); LoginWindow->SetContent(CreatedUMGWidget->TakeWidget()); // 窗口在最前面,可以置后 FSlateApplication::Get().AddWindowAsNativeChild(LoginWindow.ToSharedRef(), FGlobalTabmanager::Get()->GetRootWindow().ToSharedRef()); }
这段代码是用于在 Unreal Engine 中创建一个登录窗口,并将一个 UMG(Unreal Motion Graphics)Widget 添加到窗口中作为内容。如果传入的 Blueprint 对象是一个 UEditorUtilityWidget 的子类,就会从编辑器中获取当前的世界,创建一个指定类的 UMG Widget 对象,并将其设置为窗口的内容。最后,通过调用 FSlateApplication::Get().AddWindowAsNativeChild() 将窗口添加到 Slate 应用程序的根窗口中,并显示在最前面。
ue5 蓝图 按类获取组件如何与等号相连
在Unreal Engine (UE) 5 的蓝图系统中,当你想要通过类名动态地获取组件时,通常会使用`FindObjectComponent` 或 `FindComponentByClass` 功能,而不是直接使用等号(=)。这两个函数允许你在场景中查找指定类型的组件实例。
例如,如果你想获取一个名为`Actor`的所有`UPawn`类型的组件,你可以这样做:
```blueprint
// 类型参数替换为你需要的具体类,如UPawn
TSubclassOf<AActor> PawnClass = APawn::StaticClass();
AActor* MyActor = GetOwner(); // 获取当前蓝图的父actor
UPawn* PawnComponent = MyActor->FindObjectComponent(PawnClass);
```
这里,`FindObjectComponent` 接收一个`TSubclassOf`类型的参数,表示你希望查找的对象的类。如果找到了匹配的组件,它将返回该类型的指针;如果没有找到,则返回nullptr。
请注意,在实际操作时,记得处理可能出现的结果,比如检查`PawnComponent`是否为null,因为并非所有演员都包含`UPawn`类型的组件。