Compare commits

...

2 Commits

Author SHA1 Message Date
a07bf2a19c 鱼的配置信息中添加id 2025-10-31 18:49:46 +08:00
c3e1ed0762 添加预试种物品 信息显示 2025-10-31 17:38:46 +08:00
13 changed files with 122 additions and 1 deletions

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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;
}; };

View File

@ -81,7 +81,7 @@ void UQuestAsset::PostDuplicate(bool bDuplicateForPIE)
} }
} }
} }
QuestID += 1; QuestID = MaxQuestID + 1;
} }
} }
#endif #endif

View File

@ -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;
}

View File

@ -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;
};