创建组件Component CreateDefaultSubobject<T>() //在构造函数中使用 .h//第一人称的骨骼模型UPROPERTY(VisibleDefaultsOnly,Category="SlAi")USkeletalMeshComponent*MeshFirst;.cppMeshFirst=CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("MeshFirst")); NewObject<T> //在任何地方使用 // UPROPERTY() 编辑...
BaseMesh->SetupAttachment(RootComponent); 2. 在引擎里寻找内容 举个例子: staticConstructorHelpers::FObjectFinder<USkeletalMesh>StaticMeshFirst(TEXT ("SkeletalMesh'/Game/Res/PolygonAdventure/Mannequin/FirstPlayer/SkMesh/FirstPlayer.FirstPlayer'")); MeshFirst= CreateDefaultSubobject<USkeletalMeshComponent>...
CreateDefaultSubobject——创建组件 <UStaticMeshComponent> 创建一个静态网格体组件 ShitMesh->SetupAttachment(RootComponent)——将网格体附着到根组件上。(附着后是StaticMesh就是根组件,DefaultSceneRoot会消失的) 【4.3】给网格体组件赋值(DefaultValue) static ConstructorHelpers::FObjectFinder<UStaticMesh>CubeVisua...
LoadClass<T>():加载UClass,一般用来加载蓝图资源并获取蓝图Class。实际上源码里LoadClass的实现是调用LoadObject并获取类型。 LoadClass的模版名称,和上面FClassFinder一样,不能直接写UBlueprint。 LoadClass路径规范也和上面的FClassFinder一样,带_C后缀或去掉前缀。
注: 使用CreateDefaultSubobject必须在构造函数中,如果是其他成员函数,则形式为 UBoxComponent* MyNewBox = NewObject(this); 这里的this是一个Character指针。但这样有个问题:NewObject非构造函数中创建的Box无法及时更新NavMesh,也就是说该box在NavMesh不会被当作障碍物。
在对象的构造函数中,我们使用 CreateDefaultSubobject 函数创建子对象。 然后,我们通过 SetBoxExtent 函数使用一个分别包含 x、 y 和 z 大小的 FVector 来设置盒子的区段(大小)。 在函数的实现中,我们从一些预设的文本创建一个 FString,并使用 FString: : Printf 函数替换一些数据参数。 注意,Actor-GetName ()...
ANewCreateActor::ANewCreateActor() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick=true; BuildingMesh =CreateDefaultSubobject<UStaticMeshComponent>("BuildingMesh"); ...
Root_C = CreateDefaultSubobject<USceneComponent>(TEXT("HelloWorld")); RootComponent = Root_C; HealthMesh->AttachToComponent(Root_C, FAttachmentTransformRules::KeepRelativeTransform); } // Called when the game starts or when spawned void AMyActor::BeginPlay() ...
PointLight = CreateDefaultSubobject<UPointLightComponent>("PointLight"); RootComponent = PointLight; } // Called when the game starts or when spawned void AParamDelegateListener::BeginPlay() { Super::BeginPlay(); UWorld* TheWorld = GetWorld(); ...
ObjectType(ECC_Pawn); MeshFirst->SetCollisionEnabled(ECollisionEnabled::NoCollision); MeshFirst->SetCollisionResponseToAllChannels(ECR_Ignore); //构造函数添加组件 RootComponent = CreateDefaultSubobject(TEXT("Center")); //动态创建UObject UMyObject*NewObj=NewObject(); //动态创建Object FMyObject*...