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

效果:

相关推荐
一线灵6 小时前
跨平台游戏引擎 Axmol-2.11.0 发布
游戏引擎
Robot侠6 小时前
ROS1从入门到精通 2:ROS1核心概念详解(节点、话题、服务一网打尽)
unity·游戏引擎·ros·机器人操作系统
feiduoge20 小时前
教程 41 - 增强纹理映射(采样器)
windows·游戏引擎·图形渲染
feiduoge21 小时前
教程 37 - 法线贴图
windows·游戏引擎·图形渲染
feiduoge21 小时前
教程 42 - 可写纹理
windows·游戏引擎·图形渲染
qq_428639611 天前
虚幻基础:mod制作流程
游戏引擎·虚幻
老朱佩琪!1 天前
Unity组合模式
unity·游戏引擎·组合模式
向宇it1 天前
【unity游戏开发——网络】unity对接steam,并上传发布游戏版本——Steamworks.NET
游戏·unity·游戏引擎·.net·交互
陈言必行1 天前
Unity 实战:屏蔽移动平台 UI 点击检测的“坑”与解决之道
ui·unity·游戏引擎
nnsix1 天前
Unity Terrain获取关联的TerrainData
unity·游戏引擎