[60. Finishing the Pickup Widget]
![](https://blog.kakaocdn.net/dn/byDO4Q/btrQDPmn7Ne/VRjgWRxarzHen6RXtHoAF1/img.png)
![](https://blog.kakaocdn.net/dn/Cory6/btrQvZqUR7y/XOHL5IZo2YW1KmZAXjX1s0/img.png)
오버레이는 여러 자식을 가질 수 있지만 Z-order 조절이 불가능하다. 모든 자식들에게 레이어 ID를 1씩 증가시키기 때문에 같은 아틀라스를 사용하더라도 드로우콜이 분리되므로 유의해서 사용해야 한다.
[61. Add Widget to Weapon]
![](https://blog.kakaocdn.net/dn/bUlfEp/btrQEItJReX/NZvf12OrhGKUWWtaYBSFKK/img.png)
![](https://blog.kakaocdn.net/dn/bGOulo/btrQEHIngpc/jT3PbDAlRh6pm9a5zY15U1/img.png)
위젯 컴포넌트를 액터에 붙여서 제작한 위젯 블루프린트를 스크린에 띄운다.
스페이스가 Screen이 아닌 World라면 추가 설정이 필요하지만 메시처럼 렌더링 되어서 오브젝트에 의해 가려질 수도 있다.
[64. Widget Trace When Close]
일정 거리 내에서 라인트레이싱이 성공한 경우에만 UI를 띄우고 싶다면 Sphere 컴포넌트를 하나 더 추가해서 Sphere에 overlap 이벤트가 발생하고 액터가 플레이어인 경우에만 띄워주면 된다.
구현 방법은 여러가지가 있겠지만 플레이어에게 겹침 여부를 알려주고 겹친 경우에만 레이트레이싱을 처리하면 틱에서 리소스가 낭비되지 않는다.
[66. Bind Item Name]
![](https://blog.kakaocdn.net/dn/cNfKWL/btrQEr0jfhN/0rwFL3xO2edWyx4gIzj0J1/img.png)
하드코딩된 값을 객체가 가지고 있는 이름으로 바꿔주기 위해 바인딩을 해주어야 한다.
// Item.h
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Item, meta = (AllowPrivateAccess = "true"))
FString ItemName;
![](https://blog.kakaocdn.net/dn/ECwC6/btrQywoNZoC/aNlOdBBZYgMljN78ENofnK/img.png)
설정 자체는 직관적이지만 Item Reference를 어떻게 참조하느냐를 해결해야 한다.
해당 위젯 블루프린트는 Item 객체가 위젯 컴포넌트로써 가지고 있기 때문에 Item에서 접근해서 참조를 설정해주어야 한다.
![](https://blog.kakaocdn.net/dn/3Ncgp/btrQDdIwuGl/2J1eWpbasegBqEzoMW5KlK/img.png)
![](https://blog.kakaocdn.net/dn/clGrpu/btrQFw70mGA/AFlKmL2i8KuiOkNsW8EqaK/img.png)
[68. Bind Star Opacity]
희귀도 역시 바인딩을 하면 되지만 이미지가 개별로 5개이기 때문에 각각 설정해주어야 한다.
이미지의 표시 여부는 알파값만 바꿔주면 되기 때문에 opacity에 바인딩을 하면 된다.
![](https://blog.kakaocdn.net/dn/xQLzb/btrQC79sE9b/g76W504qhXx11nvIh9GMC1/img.png)
![](https://blog.kakaocdn.net/dn/cjqatp/btrQChYUn4o/6nAkl2t31rvOVVfdeZxvvk/img.png)
해당 노드들을 함수로 접어서 연결하면 훨씬 더 편하게 할 수 있다.
함수 내부의 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;
![](https://blog.kakaocdn.net/dn/bxJ7ot/btrQDxthKSD/IPF7EGDXkDKxzjdBnirmyk/img.png)
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 |