Compare commits
2 Commits
f4fe5cc478
...
a07bf2a19c
| Author | SHA1 | Date | |
|---|---|---|---|
| a07bf2a19c | |||
| c3e1ed0762 |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -2,3 +2,35 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "FishInfoConfigAsset.h"
|
#include "FishInfoConfigAsset.h"
|
||||||
|
|
||||||
|
#include "AssetRegistry/AssetRegistryModule.h"
|
||||||
|
|
||||||
|
void UFishInfoConfigAsset::PostDuplicate(bool bDuplicateForPIE)
|
||||||
|
{
|
||||||
|
Super::PostDuplicate(bDuplicateForPIE);
|
||||||
|
if (!bDuplicateForPIE)
|
||||||
|
{
|
||||||
|
int32 MaxFishID = 0;
|
||||||
|
|
||||||
|
// 获取资产注册表模块
|
||||||
|
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>("AssetRegistry");
|
||||||
|
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
|
||||||
|
|
||||||
|
// 查找所有 QuestAsset 资产
|
||||||
|
TArray<FAssetData> AssetDataList;
|
||||||
|
AssetRegistry.GetAssetsByClass(UFishInfoConfigAsset::StaticClass()->GetClassPathName(), AssetDataList, true);
|
||||||
|
|
||||||
|
// 遍历所有已存在的任务资产,找到最大的 QuestID
|
||||||
|
for (const FAssetData& AssetData : AssetDataList)
|
||||||
|
{
|
||||||
|
if (UFishInfoConfigAsset* FishAsset = Cast<UFishInfoConfigAsset>(AssetData.GetAsset()))
|
||||||
|
{
|
||||||
|
if (FishAsset->FishID > MaxFishID)
|
||||||
|
{
|
||||||
|
MaxFishID = FishAsset->FishID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FishID = MaxFishID + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -14,7 +14,12 @@ UCLASS(BlueprintType)
|
|||||||
class PROJECTFISH_API UFishInfoConfigAsset : public UDataAsset
|
class PROJECTFISH_API UFishInfoConfigAsset : public UDataAsset
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
virtual void PostDuplicate(bool bDuplicateForPIE) override;
|
||||||
public:
|
public:
|
||||||
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = fish, meta = (ToolTip = "鱼的ID"))
|
||||||
|
int32 FishID;
|
||||||
|
|
||||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = fish, meta = (ToolTip = "鱼的名称"))
|
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = fish, meta = (ToolTip = "鱼的名称"))
|
||||||
FText FishName;
|
FText FishName;
|
||||||
|
|
||||||
|
|||||||
@ -25,6 +25,9 @@ class PROJECTFISH_API UFishingRewardDataAsset : public UPrimaryDataAsset
|
|||||||
public:
|
public:
|
||||||
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获名称"))
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获名称"))
|
||||||
FText RewardName;
|
FText RewardName;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获描述"))
|
||||||
|
FText RewardDes;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获图片") )
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获图片") )
|
||||||
UTexture2D* RewardTexture;
|
UTexture2D* RewardTexture;
|
||||||
@ -40,4 +43,7 @@ public:
|
|||||||
|
|
||||||
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获对应的任务信息"))
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "鱼获对应的任务信息"))
|
||||||
FQuestTargetInfo QuestTargetInfo;
|
FQuestTargetInfo QuestTargetInfo;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category = "Fishing Reward Data" , meta = (ToolTip = "价格"))
|
||||||
|
float RewardPrice;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -81,7 +81,7 @@ void UQuestAsset::PostDuplicate(bool bDuplicateForPIE)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QuestID += 1;
|
QuestID = MaxQuestID + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -0,0 +1,56 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "Factory/FishInfoConfigAssetFactory.h"
|
||||||
|
#include "ProjectFish/DataAsset/QuestAsset.h"
|
||||||
|
#include "AssetRegistry/AssetRegistryModule.h"
|
||||||
|
#include "AssetRegistry/AssetData.h"
|
||||||
|
#include "ProjectFish/DataAsset/FishInfoConfigAsset.h"
|
||||||
|
|
||||||
|
UFishInfoConfigAssetFactory::UFishInfoConfigAssetFactory()
|
||||||
|
{
|
||||||
|
SupportedClass = UFishInfoConfigAsset::StaticClass();
|
||||||
|
bCreateNew = true;
|
||||||
|
bEditAfterNew = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
UObject* UFishInfoConfigAssetFactory::FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags,
|
||||||
|
UObject* Context, FFeedbackContext* Warn)
|
||||||
|
{
|
||||||
|
UFishInfoConfigAsset* NewFishAsset = NewObject<UFishInfoConfigAsset>(InParent, Class, Name, Flags | RF_Transactional);
|
||||||
|
|
||||||
|
// 自动生成唯一的 QuestID
|
||||||
|
if (NewFishAsset)
|
||||||
|
{
|
||||||
|
int32 MaxFishID = 0;
|
||||||
|
|
||||||
|
// 获取资产注册表模块
|
||||||
|
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked<FAssetRegistryModule>("AssetRegistry");
|
||||||
|
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
|
||||||
|
|
||||||
|
// 查找所有 QuestAsset 资产
|
||||||
|
TArray<FAssetData> AssetDataList;
|
||||||
|
AssetRegistry.GetAssetsByClass(UFishInfoConfigAsset::StaticClass()->GetClassPathName(), AssetDataList, true);
|
||||||
|
|
||||||
|
// 遍历所有已存在的任务资产,找到最大的 QuestID
|
||||||
|
for (const FAssetData& AssetData : AssetDataList)
|
||||||
|
{
|
||||||
|
if (UFishInfoConfigAsset* FishAsset = Cast<UFishInfoConfigAsset>(AssetData.GetAsset()))
|
||||||
|
{
|
||||||
|
if (FishAsset->FishID > MaxFishID)
|
||||||
|
{
|
||||||
|
MaxFishID = FishAsset->FishID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NewFishAsset->FishID = MaxFishID + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NewFishAsset;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool UFishInfoConfigAssetFactory::ShouldShowInNewMenu() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Factories/Factory.h"
|
||||||
|
#include "FishInfoConfigAssetFactory.generated.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class PROJECTFISHEDITOR_API UFishInfoConfigAssetFactory : public UFactory
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
public:
|
||||||
|
UFishInfoConfigAssetFactory();
|
||||||
|
|
||||||
|
// UFactory interface
|
||||||
|
virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override;
|
||||||
|
virtual bool ShouldShowInNewMenu() const override;
|
||||||
|
};
|
||||||
Loading…
x
Reference in New Issue
Block a user