U++ SpawnActor

U++ SpawnActor StaticClass()获取类基本用法UClass* MyClass AMyActor::StaticClass();此时没有生成任何Actor只是获取了AMyActor这个类型其中UClass* 储存类信息。StaticClass告诉函数需要处理哪一种类。例如查找场景中的所有AMyActor类TArrayAActor* FoundActors; UGameplayStatics::GetAllActorsOfClass( GetWorld(), AMyActor::StaticClass(), FoundActors );此处的StaticClass告诉函数查找AMyActor这种类型的所有Actor。与GetClass()的区别GetClass()是从一个已经存在的对象获取它实际是什么类型AActor* SomeActor ...; UClass* ClassB SomeActor-GetClass();TSubclassOf基本用法TSubclassOf保存要生成哪一种Actor类UPROPERTY(EditAnywhere, BlueprintReadWrite, Category Spawn)TSubclassOfAActor ActorClass;这样可以在细节面板或蓝图面板中选择AActor类或AActor的子类被选择的Actor类不需要在场景中实例化。注意此处被选择的Actor类可以是蓝图类可以是C类可以是基础自C的蓝图类。与AActor* 的区别AActor* 要使用这个actor必须先有一个实例。AActor* TargetActor nullptr;实例不一定是手动放进去的AActor可以指向内存中已经创建出来的某个AActor实例可以是在关卡编辑器中提前放置的游戏运行时通过SpawnActor生成的UE 自动创建的例如玩家控制器通过函数查找到的已有 Actor。SpawnActorTSubclassOfAActor BoxClass; FActorSpawnParameters SpawnParams; AActor* SpawnedBox GetWorld()-SpawnActorAActor( BoxClass, SpawnLocation, SpawnRotation, SpawnParams );FActorSpawnParameters 定义为传给 SpawnActor() 的“可选参数结构体”其中包含 Owner、Instigator、碰撞处理方式等设置。初学阶段可以暂不用SpawnParams。