[60. Finishing the Pickup Widget]

 

오버레이는 여러 자식을 가질 수 있지만 Z-order 조절이 불가능하다. 모든 자식들에게 레이어 ID를 1씩 증가시키기 때문에 같은 아틀라스를 사용하더라도 드로우콜이 분리되므로 유의해서 사용해야 한다.

 

참고 : https://blog.nullbus.net/94

 

[61. Add Widget to Weapon]

 

위젯 컴포넌트를 액터에 붙여서 제작한 위젯 블루프린트를 스크린에 띄운다.

스페이스가 Screen이 아닌 World라면 추가 설정이 필요하지만 메시처럼 렌더링 되어서 오브젝트에 의해 가려질 수도 있다.

 

[64. Widget Trace When Close]

 

일정 거리 내에서 라인트레이싱이 성공한 경우에만 UI를 띄우고 싶다면 Sphere 컴포넌트를 하나 더 추가해서 Sphere에 overlap 이벤트가 발생하고 액터가 플레이어인 경우에만 띄워주면 된다.

구현 방법은 여러가지가 있겠지만 플레이어에게 겹침 여부를 알려주고 겹친 경우에만 레이트레이싱을 처리하면 틱에서 리소스가 낭비되지 않는다.

 

[66. Bind Item Name]

 

하드코딩된 값을 객체가 가지고 있는 이름으로 바꿔주기 위해 바인딩을 해주어야 한다.

 

// Item.h
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Item, meta = (AllowPrivateAccess = "true"))
FString ItemName;

 

설정 자체는 직관적이지만 Item Reference를 어떻게 참조하느냐를 해결해야 한다.

해당 위젯 블루프린트는 Item 객체가 위젯 컴포넌트로써 가지고 있기 때문에 Item에서 접근해서 참조를 설정해주어야 한다.

 

위젯 컴포넌트를 이벤트 그래프에 끌고오면 된다

 

기본값으로 Default를 설정했다

 

[68. Bind Star Opacity]

 

희귀도 역시 바인딩을 하면 되지만 이미지가 개별로 5개이기 때문에 각각 설정해주어야 한다.

이미지의 표시 여부는 알파값만 바꿔주면 되기 때문에 opacity에 바인딩을 하면 된다.

 

 

해당 노드들을 함수로 접어서 연결하면 훨씬 더 편하게 할 수 있다.

함수 내부의 Return Alpha는 지역변수이다.

 

UENUM(BlueprintType)
enum class EItemRarity : uint8
{
	EIR_Damaged UMETA(DisplayName = "Damaged"),
	EIR_Common UMETA(DisplayName = "Common"),
	EIR_Uncommon UMETA(DisplayName = "Uncommon"),
	EIR_Rare UMETA(DisplayName = "Rare"),
	EIR_Legendary UMETA(DisplayName = "Legendary"),

	EIR_MAX UMETA(DisplayName = "DefaultMax")
};

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Item, meta = (AllowPrivateAccess = "true"))
TArray<bool> ActiveStars;

 

enum class와 TArray를 이용하면 에디터에서 쉽게 볼 수 있다.

'언리얼 엔진 > UE C++ Shooter Course' 카테고리의 다른 글

[UE C++ Shooter] Aiming and Crosshairs  (0) 2022.11.05
[UE C++ Shooter] Animations  (0) 2022.10.25

+ Recent posts