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中同步更新图标:

效果:

相关推荐
心疼你的一切16 小时前
Unity开发Rokid应用之离线语音指令交互模型
android·开发语言·unity·游戏引擎·交互·lucene
Sator118 小时前
Unity使用OpenXR时,初始化失败的问题
unity·游戏引擎·vr
雨泽‎1 天前
Unity在URP中开启后处理导致RenderTexture存在背景
unity·游戏引擎·图形渲染
冒泡P2 天前
【Unity】TextMeshPro富文本中使用精灵图集
ui·unity·c#·游戏引擎
B0URNE2 天前
【Unity基础详解】(9)Unity核心:UI系统
ui·unity·游戏引擎
jtymyxmz2 天前
《Unity Shader》7.3 渐变纹理
unity·游戏引擎
胡童嘉3 天前
长沙烈焰鸟网络科技有限公司实习day13日记
功能测试·学习·职场和发展·游戏引擎·cocos2d
y***54883 天前
C++在游戏引擎中的开发
开发语言·c++·游戏引擎
BuHuaX3 天前
Unity_AssetBundle相关
unity·c#·游戏引擎·游戏策划
神码编程3 天前
【Unity】 HTFramework框架(六十八)StringEditor字符串复杂编辑器
unity·编辑器·游戏引擎·htframework