본문 바로가기
카테고리 없음

[언리얼] s6brian/Tetris3D 의 UMaterialInstanceDynamic 오류 해결 방법

by 나스닥171819 2023. 9. 1.
728x90
반응형

언리얼5를 반드시 사용해야 하는 이유

블루프린트가 공유가 가능했다.

 

언리얼4에서는 외부로 복사만 가능하다.

언리얼5는 양방향으로 복사 붙여넣기가 된다.

 

언리얼5를 써야 하는 이유이다.

 

4.27.2 에서 UMaterialInstanceDynamic 의 사용법이 달랐다.

 

 

 

StartMergeTimer() 함수에서 

 

->GetVectorParameterValue(TILE_COLOR_PARAM_NAME, LColor)))

 

부분을 

->GetVectorParameterValue(FName(TILE_COLOR_PARAM_NAME), LColor)))

으로 수정하면 된다. 


void ATetrisGrid::StartMergeTimer()
{
TArray<int32> GridIndeces     = CurrentTetromino->GetGridIndeces(Dimension, Sides, Point);
TArray<int32> TetrominoBitmap = CurrentTetromino->GetBitmap();
int32 TBitmapLength           = TetrominoBitmap.Num();
int32 GBitmapLength           = BitMap.Num();

UMaterialInstanceDynamic * CurrentTetrominoDynamicMat = CurrentTetromino->GetDynamicBlockMatInstance();
FLinearColor LColor;
if (!(CurrentTetrominoDynamicMat && CurrentTetrominoDynamicMat->GetVectorParameterValue(FName(TILE_COLOR_PARAM_NAME), LColor)))
{
LColor = FLinearColor(0.0f, 0.0f, 0.0f);
}

for (int Index = 0; Index < TBitmapLength; ++Index)
{
if (   GridIndeces[Index]     <  0
|| GridIndeces[Index]     >= GBitmapLength
|| TetrominoBitmap[Index] == 0             )
{
continue;
}

DynamicBlockMats[GridIndeces[Index]]->SetVectorParameterValue(TILE_COLOR_PARAM_NAME, LColor);
BitMap[GridIndeces[Index]] = TetrominoBitmap[Index];
Blocks[GridIndeces[Index]]->SetVisibility(true);
}

LapsedTime = 0.0f;
CurrentGridState = EGridState::ClearRowAnimation;
//CurrentGridState = EGridState::ClearRowCleanup;
}

 

 

 

https://github.com/s6brian/Tetris3D

 

GitHub - s6brian/Tetris3D: Tetris 3D made with Unreal Engine

Tetris 3D made with Unreal Engine. Contribute to s6brian/Tetris3D development by creating an account on GitHub.

github.com

 

 

반응형