UI에서 사용되는 이미지를 각각의 Sprite로 관리하지 않고, 하나의 텍스처와 머티리얼을 사용하여 이미지의 특정 부분을 분할하여 사용하는 방식으로 최적화를 구현하였습니다.

Material 구현
DataManager를 통하여 텍스처의 행(RowIndex)과 열(ColumnIndex) 정보를 가지고 온다.
if ( FItemTable_ModuleInfo* ModuleInfo = DataManager->TryGetModuleInfo(ModuleTypeName)) { const int32 rowIndex = ModuleInfo->RowIndex; const int32 columnIndex = ModuleInfo->ColumnIndex; if(nullptr == SlotMaterialInstanceDynamic ) { SlotMaterialInstanceDynamic = UKismetMaterialLibrary::CreateDynamicMaterialInstance(GetWorld(), SlotMaterialInstance); } if ( SlotMaterialInstanceDynamic ) { SlotMaterialInstanceDynamic->SetScalarParameterValue(FName("RowIndex"), rowIndex); SlotMaterialInstanceDynamic->SetScalarParameterValue(FName("ColumnIndex"), columnIndex); PreviewImage->SetBrushFromMaterial(SlotMaterialInstanceDynamic); } }
첫번째 텍스처를 아래의 텍스처와 같이 필요한 부분만 잘라서 사용할 수 있다 !