首先创建一个继承自UObject类的类,起名为UserAsset。
1 // Fill out your copyright notice in the Description page of Project Settings.
2
3 #pragma once
4
5 #include "CoreMinimal.h"
10 #include "UObject/NoExportTypes.h"
11 #include "UserAsset.generated.h"
12
13 /**
14 *
15 */
16 UCLASS()
17 class MYPROJECT14_API UUserAsset : public UObject
18 {
19 GENERATED_BODY()
20
21 public:
22 UUserAsset();
27
28 UPROPERTY(EditAnywhere, Category = Properties)
29 FString Name;
30 };
31
32 // Fill out your copyright notice in the Description page of Project Settings.
33
34 //以下是源文件
35 #include "UserAsset.h"
36
37 UUserAsset::UUserAsset() {
38 Name = "Dlak";
39 }
在创建一个Factory类,自定义的资源创建都是需要通过Factory类实现的。
1 // Fill out your copyright notice in the Description page of Project Settings.
2
3 #pragma once
4
5 #include "CoreMinimal.h"
6 #include "Factories/Factory.h"
7 #include "UserAsset.h"
12 #include "MyAssetFactory.generated.h"
13
14 /**
15 *
16 */
17 UCLASS()
18 class MYPROJECT14_API UMyAssetFactory : public UFactory
19 {
20 GENERATED_BODY()
21
22 public:
23 UMyAssetFactory();
28 virtual UObject* FactoryCreateNew(UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn, FName CallingContext) override;
29 };
virtual UObject* FactoryCreateNew()是继承自父类的方法,用于工厂创建新的资源用的方法。
1 // Fill out your copyright notice in the Description page of Project Settings.
2
3
4 #include "MyAssetFactory.h"
5
6 UMyAssetFactory::UMyAssetFactory():UFactory(){
7
8 bCreateNew = true;
9 bEditAfterNew = false;
10 SupportedClass = UUserAsset::StaticClass();//工厂需要创建的实例类型
11 }
16
17 UObject* UMyAssetFactory::FactoryCreateNew(UClass* InClass, UObject* InParent, FName InName, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn, FName CallingContext)
18 {
19
20 auto MyAsset = NewObject<UUserAsset>(InParent, InClass, InName, Flags); //因为Asset是继承自UObject类的,所以这里用的是NewObject
21
22 return MyAsset;
23 }
编译后效果如下图: