虚幻C++学习(二)

UObject实例化

创建UObject实例

方法一:

	//实例化UObject
	MyTestObject = NewObject<UMObject>();

方法二:

	//方法二
	TSubclassOf<UMObject> MySubClassObject = UMObject::StaticClass();
	MyTestObject = NewObject<UMObject>(GetWorld(), MySubClassObject);

上面的这个TSubClassOf方法:

UClass的安全模板类,通过此模板类我们可以快速在编辑器中进行类型选择,帮助我们快速构建某种类型对象数据。 

//返回一个UClass类型
	MySubClassObject.Get(); 

UObject销毁

1.  自动销毁(UE自动垃圾回收机制)

2. UObjcet::ConditionalBeginDestory(异步执行,且对象在当前帧内有效)

Obj->ConditionBeginDestory();
Obj = nullptr;

GameInstance实例化

首先在项目设置里设置游戏实例类

然后在代码里动态获取 

	//创建MyInstance
	MyInstance = Cast<UMyGameInstance>(GetWorld()->GetFirstPlayerController()->GetGameInstance());

创建Actor并添加组件

1. 头文件中声明各种组件

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MySceneComponent")
		class USceneComponent* MyScene;
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MySceneComponent")
		class UStaticMeshComponent* MyMesh;
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MySceneComponent")
		class UParticleSystemComponent* MyParticle;
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MySceneComponent")
		class UAudioComponent* MyAudio;
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MySceneComponent")
		class UBoxComponent* MyBox;

2. 通过CreateDefaultSubobject方法构造组件

3. 把SceneComponent作为根组件,通过SetupAttachment方法把其他组件绑定到根组件上

	MyScene = CreateDefaultSubobject<USceneComponent>(TEXT("MyCustomScene"));
	MyMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MyCustomStaticMesh"));
	MyParticle = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("MyCustomParticleSystem"));
	MyBox = CreateDefaultSubobject<UBoxComponent>(TEXT("MyCustomBox"));
	MyAudio = CreateDefaultSubobject<UAudioComponent>(TEXT("MyCustomAudio"));

	RootComponent = MyScene;
	MyMesh->SetupAttachment(MyScene);
	MyParticle->SetupAttachment(MyScene);
	MyBox->SetupAttachment(MyScene);
	MyAudio->SetupAttachment(MyBox);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值