본문 바로가기

Unreal_Engine/UMG UI

위젯 블루프린트 구성

https://learn.unrealengine.com/course/3201586/module/6416533?moduletoken=UHxxnDLPW8RBCJ9ffu0xk9p~N0o5BmhAnV6kvRsGo-ZxwPZ-K~1aDt-qU5yNlowB&LPId=0 

 

유효하지 않은 액세스입니다.

죄송합니다.... 조회 권한이 없는 페이지에 액세스를 시도했습니다.. 오류일 경우에는 관리자에게 문의하시기 바랍니다.. 이전 페이지로 다시 돌아갈 수 있습니다.... 돌아가기

learn.unrealengine.com

 

블루프린트에서 라인 컨트롤 하는법

 

라인과 라인사이를 더블클릭하면 라인 정리를 할수 있는 컨트롤 포인트가 나온다.

그 컨트롤 포인트를 이동하기 위해서는 컨트롤 키를 누른채 마우스로 드래그를 하면된다.

 

그리고 라인을 바로 브레이크 할려면 그냥 Alt+ 클릭을 해서 라인을 클릭하면 바로 부러진다.

 

 

 

기본적으로 예전에 유니티 UGUI를 배울때하고 UI는 구성하는 방식이 똑같은것 같다.

우선 기본적인 특징은

1. 컴퓨터를 기준으로 1920*1080 이 Full-Screen이며, 만약 UI를 만들어서 배치하고 싶다면

처음부터 이 픽셀을 기준으로 만드는게 가장 초안대로 보일 가능성이 크다.

2. Slot은 부모가 어떤거냐에 따라서 달라질수 있으며 지금은 Canvas Panel이 부모임으로 slot의 Canvas Panel이 뜬다.

이미지는 Apperance의 Brush 탭에서 줄수가 있다.

 

3.부모가 Canvas Panel이 아닌 경우

이렇게 설정 할수 있는 요소도 부모가 어떤것이냐에 따라 달라질수 있음을 알수가 있다.

 

==============================================================================

위치레이아웃에서는 Game Mode 에서 HUD를 초기화 하고 없애고

UMG 에서 크로스 헤어를 추가하고

Health 하고 Ammo Text 를 추가한것 밖에 없다.

=========================================================================

-핵심 이벤트-

 

Event Construct : 일단 위젯이 생성되자마자 호출되는 함수 부분인거 같은데

의문점이 있다면 왜 this is just for cosmetic이라는 부분이 약간 의문점이다. 외관용으로만 쓰이고

실제로는 쓰는것을 권장하지 않는다는것의 의미를 모르겠다.

블루 프린트 자체가 외관용이니까 그냥 경고 메세지를 남긴거는 아닐까 싶다.

 

Event Pre Construct : 

 

Event tick : 이거는 유니티에 Updates 함수처럼 매프레임 마다 호출되는 구간이라고 이해하면 편할꺼 같다.

 

언제나 데이터를 어디서,어떻게 받아오고 데이터를 어디에,어떠한 용도로 쓸것인가 부터 생각하는게 기본

 

 

 

 

프로그래밍으로 따지면 "Health :" 라는 스트링 값을 연산자 +를 통해 숫자와 스트링을 같이 더 한다고 했을때

그값은 숫자가 아닌 스트링값으로 변환되는 과정하고 똑같은것 같다.

================================================

 

 

아래족 파랑색이 누가 이 위젯을 소유 할것인가? 

 

그리고 이렇게 위젯을 생성했다고 해서 화면에 보이는거는 아니다.

따로 함수를 만들어서 상황에 따라 업데이트 하게끔 해줘야 한다.

========================================================================

유저 인터페이스 업데이트

 

 

 

 

우선 이방식 바인딩으로 Ammo : 를 자동적으로 바꿀수 있지만 일전에 상황에 따라 업데이트 하는 방식을 지향하는게

프로그래밍의 기초이다. 그것이 불가능한 경우도 있을지 모르겠지만, 리소스를 아끼기 위해 가급적 

매프레임 호출하는 함수는 가급적 쓰지 않는게 좋다.

 

It 's a little bit resource-intensive and really shouldn't be used 

Unless you need something that should update every tick.

 

Let's say a timer, or a countdown, or a clock.

Something that should be accurate to the display.

 

That you might want to bind.

 

 

 

일단 복잡한 블루프린트 시스템이지만 확실한것은

Target은 업데이트될 위젯 화면을 선택하라는것 같고

new value는 대상 variable을 칭하는거다.

 

=========================================

유저 인터페이스 조정

 

 

 

이런식으로 텍스트를 구별해서 넣는게 이번 강의에 포인트 이다.

 

=======================================================================

메인메뉴 생성 

 

 

 

 

 

 

아무래도 강의용이니까 간편하게 두개의 메뉴버튼 그리고 배경 이미지를 초기구성으로 두고 싶어한거 같다.

 

====================================================================

이번 영상의 핵심 Create -> Blueprits -> GameMode Base

2. 거기서 Default Pawn Class를 none으로 설정한다.

3. WorldSettings 에서 GM_MainMenu class로 바꾼다.

 

1. 일반적으로 Viewport 모드가 우선적으로 UI를 제어할 권한을 얻는다 라는식으로 설명한것 같다.

2. 이것을 UI 에서 직접적으로 제어할 방법을 이제 설명 할것 같다.

 

 

 

 

 

 

일단 한가지 확실한거는 다음 레벨로 넘어가기전에 이런식으로 게임 모드 only로 바꿔줘야하는것 같다.

=====================================================================

 

So something we can access inside of the project

 

 

 

Edit - Project settings -> Input -> Action Mappings -> 이름을 Pause 라고 수정 한뒤 P 버튼을 할당.

 

Now we have a new event call Pause that we can call.

 

 

The problem now is where do we put our pause menu?

 

Our player HUD is inside of our player becasue it's uniquely tied to elements inside

like their ammo and health

For example, the main menu is tied to level Blueprint because it doesn't really connect anything else.

 

즉, 다시 설명하면 이게 어느 블루 프린트에서 이 P 키를 눌러서 할당 받게 할지 고민인거 같다.

ManinMenu Map Blue print은 메인메뉴에 나감에 따라 접근 할수 없고,

반대로 Game mode 일대 블루프린트에서는 UI에 대한 접근을 할수 없도록 설정해 놓았다.(현 시점으로는)

 

We could create a new Blueprint for it, but we need the input to go through somewhere.

 

 

 

 

Now, we have a Player Controller that we can put code in and run our pause event.

By default it s not going to actually be hooked up

 

이제 다시 연결해주기 위해기존에 만들었던 블루프린트로 다시 간다.

 

Input -> Action Events-> Pause

 

 

 

 

 

 

 

We could set our input mode to UI Only, so let's try that.

 

 

 

마지막 부분에서는 이 만들어진 스크린이 어떻게 하면 복사가 되지 않을지  그리고  정지된 상태에서 이 이벤트들을 어떻게 운영할지 좀 더 생각해보겠다고 한다.

 

'Unreal_Engine > UMG UI' 카테고리의 다른 글

UI제작 Using Artificial intelligence  (0) 2023.04.15
2022-11-22(temporariness)  (0) 2022.11.22
위젯 블루 프린트 구성_2  (0) 2021.09.14