UE求职Demo开发日志#8 强化前置条件完善,给物品加图标

1 强化前置条件完善

StrengthManager里实现一个Check前置的函数

bool CheckPreAllIsActive(int index),所有的前置都已经激活就返回true,否则返回false

之后在强化的时候加入条件检查:

1.所有前置技能全部激活

2.本身没有强化过

最后测试的时候修改下UI样式以便查看信息

2 实现过程

2.1 bool CheckPreAllIsActive和void SetCellIsActiveByIndex

声明:

cpp 复制代码
UFUNCTION(BlueprintCallable)
bool CheckPreAllIsActive(int index);

UFUNCTION(BlueprintCallable)
void SetCellIsActiveByIndex(int index,bool isActive);

实现:

bool CheckPreAllIsActive检查所有前置是否激活

SetCellIsActiveByIndex提供一个对外接口设置IsActive

cpp 复制代码
bool UStrengthenManager::CheckPreAllIsActive(int index)
{
	TArray<int> AllPreIndex=StrengthenTree_1[index].PreIndex;
	for(int i=0;i<AllPreIndex.Num();i++)
	{
		if(AllPreIndex[i]>=0&&AllPreIndex[i]<StrengthenTree_1.Num())
		{
			if(!StrengthenTree_1[AllPreIndex[i]].bIsActive)
			{
				return false;
			}
		}
	}
	return true;
}

void UStrengthenManager::SetCellIsActiveByIndex(int index,bool isActive)
{
	if(index>=0&&index<StrengthenTree_1.Num())
	{
		StrengthenTree_1[index].bIsActive=isActive;
	}
}

2.2 TryStrengthenByCellIndex的修改

修改条件判断,加入前置检查和自身是否激活检查

cpp 复制代码
if(temp.NeededItems[i].CurrentOwnedCnt>OwnedCnt||!StrengthenManager->CheckPreAllIsActive(index)||temp.bIsActive)
{
	bCanStrengthen=false;
}

强化具体逻辑修改:

cpp 复制代码
    StrengthenManager->SetCellIsActiveByIndex(index,true);
    StrengthenManager->Save();
    StrengthenByName(FString("BaseAttack"),10);
    for(int i=0;i<temp.NeededItems.Num();i++)
    {
		WarehouseManager->RemoveItemFromWarehouse(temp.NeededItems[i].ItemId,temp.NeededItems[i].CurrentOwnedCnt);
    }
	WarehouseManager->SaveData();
	UpdatePadInfo();
	SaveToSlot();
	return true;

2.3 UI样式的修改

加了一个根据是否激活更新外观的Update:

在开始的时候统一了按钮的样式:

3 最终效果测试

除了界面丑以外还是挺完美的()

4 补充:给物品加入图标

仓库管理类中加入了一个获取图标的函数

cpp 复制代码
UTexture2D* UWarehouseManager::GetTexture2DByItemId(int32 ItemId)
{
	UTexture2D* MyTexture=NewObject<UTexture2D>();
	if(ItemId==1)
	{
		MyTexture = LoadObject<UTexture2D>(nullptr, TEXT("/Game/ItemTexture/id_1.id_1")); 
	}
	return MyTexture;
}

UI中同步更新图标:

效果:

相关推荐
死也不注释1 小时前
【Unity 编辑器工具开发:GUILayout 与 EditorGUILayout 对比分析】
unity·编辑器·游戏引擎
小赖同学啊10 小时前
物联网中的Unity/Unreal引擎集成:数字孪生与可视化控制
物联网·unity·游戏引擎
Zlzxzw13 小时前
使用unity创建项目,进行动画制作
unity·游戏引擎
X_StarX18 小时前
【Unity笔记01】基于单例模式的简单UI框架
笔记·ui·unity·单例模式·游戏引擎·游戏开发·大学生
KhalilRuan1 天前
Unity-MMORPG内容笔记-其一
unity·游戏引擎
向宇it1 天前
【unity游戏开发——网络】网络游戏通信方案——强联网游戏(Socket长连接)、 弱联网游戏(HTTP短连接)
网络·http·游戏·unity·c#·编辑器·游戏引擎
qq_168278952 天前
Protobuf在游戏开发中的应用:TypeScript + Golang 实践
服务器·golang·游戏引擎
12 天前
Lua复习之何为闭包
开发语言·unity·游戏引擎·lua·交互
深空数字孪生12 天前
2025年小程序地图打车的5大技术革新:实时路况预测与智能调度升级
大数据·人工智能·unity·性能优化·小程序·游戏引擎
RPGMZ12 天前
RPGMZ 游戏引擎如何与lua进行互相调用 初探
开发语言·javascript·游戏引擎·lua·rpgmz