UE求职Demo开发日志#18 数据表获取物品信息,添加背包模块

1 把获取物品信息改为读取数据表

先创建结构,暂时有这几个属性:

USTRUCT(BlueprintType)
struct ARPG_CPLUS_API FMyItemData:public FTableRowBase
{
	GENERATED_USTRUCT_BODY()
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int ItemId;//物品Id,唯一
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int MaxOwnedCnt;//最大堆叠数量
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FString ItemBaseName;//物品名称
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UTexture2D* Texture;//物品图标
};

 创建对应的数据表

实现Get函数:

FMyItemData UWarehouseManager::GetItemDataByItemId(int ItemId)
{
	if(!ItemDataTable)return FMyItemData();
	// 获取DataTable的所有行
	TArray<FName> RowNames= ItemDataTable->GetRowNames();

	// 遍历每一行
	for (const auto& RowName : RowNames)
	{
		FMyItemData* RowData = ItemDataTable->FindRow<FMyItemData>(RowName,FString(""),true);

		if (RowData->ItemId == ItemId)
		{
			return *RowData;
		}
	}
	return FMyItemData();
}

把原来获取Texture的地方改为用这个函数:

 2 编写Bag相关代码

2.1 BagSaveData

//BagSaveData.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/SaveGame.h"
#include "BagSaveData.generated.h"

struct FMyItemInfo;
/**
 * 
 */
UCLASS()
class ARPG_CPLUS_API UBagSaveData : public USaveGame
{
	GENERATED_BODY()
public:
	UBagSaveData();
	UFUNCTION(BlueprintCal
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值