평생 공부하는 빠타박스 블로그 : Learning is Happiness
article thumbnail
SMALL

Unreal Engine 4 /4.26버전으로 수업을 진행합니다. 해당 내용은 수업에 대한 내용과 함께 

개인적인 생각 및 정보를 토대로 글을 씀을 알립니다. 

본 내용에 대하여 상업적으로 이용 및 배포를 금합니다.

이전내용)  https://ppatabox.tistory.com/67

 

 

  1. 블루프린트 생성 
  2. 블루프린트 적용
  3. 블루프린트 변수 사용
  4. 저장 폴더 및 폴더 내용
  5. 저장 폴더 및 폴더 내용 
  6. 블루프린트 주석 

1. 블루프린트 생성 

블루프린트를 다룰때는 2가지 방법이 있다. 

지금 첫번째는 잘 사용하지 않는 방법이다. 

 

 

옆에 디테일 부분을 보면 블루프린트 추가하는 곳이 보인다. 

 

 

 

이 클래스에 해당하는 멤버를 제어하는 프로그래밍을 할 수 있는 창이 나온다. 

 

위에서 잘 보면 StaticMeshActor이고 위에 Actor로 상속받아져 있고 

그것은 Object로 부터 상속받아져 있다는게 눈으로 보인다. 

이것들의 하위클래스 까지 

 

 

2번째 방법으로 진행하겠다. 

오브젝트 다 지워주고 콘텐츠로 가자 

 

콘텐츠 안에서 우클릭 하게 되면 이런 창이 뜨는데 

거기에서 블루프린트 클래스를 눌러주자 

 

 

 

 

그러면 이러한 창이 뜬다. 

우리는 Actor를 한번 만들어 볼 것이다. 

(Actor로 부터 상속받으면 뭐라고? (화면에 배치 할 수 있다))

 

 

이런식으로 뜨는데 

네임명은 블루프린트 대문자를 따서 

BP_Cube로 해주자 

그럼 이런식으로 생성되는 것을 볼 수 있다 

(콘텐츠 안에서 Ctlr + 드래그 휠 : 확대 축소)

 

 

만약에 바뀐 사항이 있으면 언리얼에서는 저렇게 별표로 표시된다. 

(저장이 안되어 있는 경우 별표로 표시됨) 

 

 

더블클릭해서 들어가주자 

 

그러면 이곳이 블루프린트 클래스를 편집할 수 있는 공간이다.  

 

 

현재 우리가 정의할려고 하는 클래스의 부모는 Actor로 표시되는 것을 볼 수 있다. (우 상단)

그리고 또한 뷰포트 똑같이 뜨는 곳은 해당 클래스에 대한 모양을 편집 할 수 있는 곳이다. 

 

 

 

 

 

"핀"이라고 부른다

 

 

 

바로 이곳에 이벤트 그래프 이다. 

이곳이 프로그래밍을 하는 곳이다. 

 

마우스 오른쪽 클릭(누른상태) : 이동 

휠 드래그 : 확대 축소 (1 : 1 zoom)

Ctlr + 휠 드래그 (좀더 섬세한 zoom) 

 

3개의 이벤트가 나타나 있는데 

이벤트란 . 특정상황에서 이 함수들 각각이 호출을 해준다. 

 

BeginPlay 이벤트[각주:1]:  게임이 시작될 때 (런타임 모드가 시작될때 ) 

ActorBeineOverlap 이벤트[각주:2] : 런타임 모드에서 Actor끼리 겹칠 때 (서로간의 충돌) 

Tick 이벤트[각주:3] : 업데이트 될때 매 프레임마다 call되는 것 

 

 

Delta Seconds[각주:4]  : 이전 프레임하고 현재프레임의 시간 

 

일단 이벤트 전부 드래그 해서 과감히 삭제해주자 

드래그 -> Delete 키 

 

 

그러고 나서 창에서 우클릭을 해보면 

이 블루프린트에서 사용할 수 있는 모든 함수가 이곳에 나타난다. 

 

2. 블루프린트 적용

BeginPlay 이벤트를 생성해주자 

 

이런식으로 클릭하여 노드를 생성해주자 

 

 

해당 함수의 핀을 누르고 끌어주면 저렇게 하얀색 선이 나오는 데 

마우스 클릭을 떼면 저런식으로 실행가능 액션들이 나온다. 

저기 화살표 핀을 '실행핀'이라고 부른다.

 

print String을 불러와보자 

 

 

 

 

그러면 이런식으로 나오는 것을 볼 수 있다. 

 

이것은 이제 게임이 시작되면 Begin에서 부터 오른쪽으로 시작될 것이다. 

C는 위에서 아래 였는데 

블루프린트는 왼쪽에서 오른쪽으로 진행된다. 

 

그러면

Print String :[각주:5]해당 넣어둔 문자열을 출력해준다. 

 

 

 

 

컴파일을 한번 눌러주고 

다시 아까 창으로 돌아가주자 

 

원래로는 저기 BP_Cube창을 더블클릭 해주면 창모드로 변환되어 움직일 수 있는데 

현재 본인은 창 옆으로 그냥 옮겨 주었음 

 

 

플레이를 눌러보자 

단축키  : Alt + P 

 

누르면 게임실행 모드로 들어가진다. 

지금 현재는 아무것도 실행이 안될 것이다. 

 

왜냐면 BP_Cube에 있는것이 아무것도 배치가 안되서 실행이 안되는 것 

 

 

BP_Cube를 그대로 좌클릭 누른상태로 끌어다 뷰포트로 옮겨놓자 

 

(살짝 올려주었다) 

그러면 이런식으로 구가 하나 뜬다. 

(아무대나 올리면 됨)

 

그렇게 하고 플레이를 해보면 

(카메라 값을 지정해주지 않아서 바로 오브젝트의 화면으로 이동한 것 )

당황하지 말고 왼쪽 위를 보면 Hello가 출력된 것을 볼 수 있다. 

 

그리고 블루프린트 창에서 보면 왼쪽에서 오른쪽으로 흘러가는 걸 볼 수 있다. 

이것은 Hello가 나오고 사라지면 멈춘다. 

너무 빨리 사라진다면 

 

블루프린트로 다시 가보자 

 

이곳에 개발 전용 을 클릭하면 몇가지 편집을 할 수 있는데 

Text Color눌러서 빨간색으로 변경해보자 

 

그러고 나서 Duration의 시간을 10초로 바꿔주자 

 

Duration[각주:6]: 몇 초 동안 출력될 것인가

 

 

 

 

 

다시 플레이 눌러보면 바뀐 색상과

조금더 오래 10초 동안 출력되는 것을 볼 수 있다. 

 


3. 블루프린트 변수 사용

 

 

 

이제 Hello만 볼 수 없다. 

다시 블루프린트로 가자 

이 블루프린트 내에 보면 변수라는게 있다. 

이게 멤버 변수를 만들어주는 곳이다. 

 

언리얼 블프에서는 Private / Protected개념이긴 한데 거의 

Public이라고 생각하면 된다. 

 

변수 옆에 + 를 눌러주자 

대문자 A로 하나 생성해주자 

 

 

 

그러고 나서 오른쪽 창을 보면 Variable에 변수유형 이름 등이 나오는 것을 볼 수 있는데. 

변수 유형을 Int로 바꾸자 

 

 

인티저 라고 되어있다. 

이렇게 하고 컴파일을 한번 눌러주자 

 

 

그러면 기본값을 입력할 수 있게 되는데 

이곳에 10이라고 넣어주자 

 

다시 변수 + 하고 B 추가 

그러면 전에 선택해둔 자료형으로 그대로 나올 것이다. 

 

컴파일 후 B의 기본값은 20 

 

또 변수 추가 해서 C를 만들어 주고 

 

변수창에서 A를 그대로 끌고와서 

화면에 놓아주자 

 

그러면

 

Get하고 Set이 나오는 것을 볼 수 있는데 

Get A를 누르자 

 

다른 방법으로는 

Ctlr + 해당 변수 선택후 끌어오기 후 놓아주면 바로 Get이 나온다. 

 

이제 이 A 와 B를 덧셈 할  것이다. 

끌어와서 놓아주고 + 를 검색해보면 Int + int 가 나올 것이다. 

추가해주자 

그러고 나서 B를 연결하자 

 

 

 

이곳에서 보면 

위의 핀이 좌항 이고

아래 핀이 우항 이다. 

 

이제 C를 끌어와서 창에 두고 Set C를 누르자 

그러고 나서 Begineplay 실행핀을 연결해주자 

 

 

 

여기에 이렇게 연결해주자 

그다음 Set C에 PrintString을 불러오자 

 

 

 

이렇게 끌어서 연결해주자 

그러면 자동으로 

숫자를 문자로 바꿔주는게 생성이 된다. 

 

 

 

컴파일 해주고 다시 플레이 창으로 가면

 

좌상단에 30 숫자 나오고 블루프린트에서 흘러가는게 보인다. 

 

 

 

 

이 Begin이 오른쪽 방향으로 향해 있는데 오른쪽으로 와서 SET이라는 것을 실행 한다. 

실행하고 보니까 C값이 필요하다. 그래서 아래로 가서 A 넣고 B넣고 한것에서

더하기 하고 그결과를 입력핀 C로 넣어주고 

 

다시 SET에서 PrintString으로 가서 실행할려고 보니까. In string이라는 값이 필요하다. 

그러면 다시 C입력핀 까지 실행 했으니까. C d입력핀에 있던 값을 출력핀의 값을 바꿔주어서 

그 값을 문자로 바꿔서 PrintString핀에 넣어준 것이다.  

 

 

 

이게 실행핀이 있는 함수가 있고 없는 함수가 있다. 

 

실행핀이 있는 것은(실행 함수) 

실행핀이 없는 함수를 (퓨어 함수)

라고 부른다. 


4. 저장 폴더 및 폴더 내용 

이제 메인실행창으로 가서 

아래 모두저장을 눌러보자 

 

 

여기서 선택저장을 눌러주면 

 

이러한 창이 뜨는데 

레벨 다른 이름으로 저장 이라고 뜬다. 

 

이 맵 하나가 하나의 레벨이라고 부른다. 

그걸 저장해 달라는 말이다. 

Level이라고 이름정하고 저장 눌러주자 

 

 

그러면 이렇게 하나 생길 것이다. 

 

 

컨텐츠에서 컨텐츠클릭하고 우클릭

-> 탐색기 에서 표시  

 

 

 

그러면 윈도우 탐색기가 하나 뜨는데 

이곳이 컨텐츠 파일을 모아둔 

폴더이다. 

 

언리얼의 모든 에셋은 확장자가 uasset이라고 되어있다. 뭐 png파일 등등 도 언리얼로 불러들이면 uasset으로 바뀐다. 

 

여기서 

Collection이랑 Developers 빼면 이안에 폴더와 일치하게 나온다. 

 

폴더에서 한칸 위로 올라가보자 

 

 

config는 이 프로젝트 설정이 이곳에 저장 된다. 

Content는 컨텐츠 브라우저에 저장된 것들이 저장 된다. 

DerivedDataCache는 개발하면서 필요한 임시데이터를 저장하는 곳 

Intermediate는 언리얼에서 무언가 설정했거나 무언가 개발 중간에 빌드된 중간파일 이라던거 등이 저장되는 곳

Saved는 로그 라던가 출력로그에 나온 내용에 대해 저장하는 곳 

 

uproject는 이 프로젝트를 관할 하는 파일 

 

 

실제 파일을 올릴때는 

config / Content / .uproject 파일만 올리면 된다. 

uproject 파일을 그냥 실행하면 열 수 있다. 

 


5. 저장 폴더 및 폴더 내용 

자 이제는 조금 복잡하게 

Floor어 뷰포트에서 클릭해주고 

스케일 부분을 조정하자. 

 

X : 5

Y : 5

 

다시 콘텐츠 브라우저 에다 우클릭 해서 블루프린트 클래스 추가 

 

이곳에서 보면 

Actor : 월드에 배치 또는 스폰할 수 있는 오브젝트 

Pawn : 빙의 하면 컨트롤러에서 입력을 받을 수 있는 액터 (컨틀롤러 뿐만아니라 AI의 네트워크 입력 명령 등 전부 포함0
Character : 걸어다니는 기능 (날아다니는거 수영, 만지는거 전부 포함) 

 

이제 Character생성 

 

 

 

생성해주고 이름은 BP_Player로 지정 

 

 

 

 

이것을 열어보면 이런식으로 화면이 나오는데 

 

기본적으로 캐릭터로 부터 상속받아서 만들어져 있고 

 

기본적으로 이렇게 컴포넌트 들이 추가가 되어있다. 

 


컴포넌트의 종류는 2가지로 나뉜다. 

 

 

컴포넌트는 직접적으로 Actor로 부터 상속받지 않고 

Object에

ActorComponent라고 있다. (모든 Component는 ActorComponent이게 부모이다)

그리고 ActorComponent이것으로 부터 상속받은 애를 

Scene Component라고 있다. 

 

ActorComponent직접 상속 받아서 구현 되는 애들은 화면에 배치될 애가 아니라 

이것은 주로 데이터를 다룰때만 사용된다. 

 

 

창에서 보면 

Character Movement가 ActorComponent로 부터 상속받은 애이다. 

 

 

그리고 SceneComponent로 부터 상속받은 애들은 

하나의 특징을 더 갖는다. 

 

ActorComponent에서 상속받으면서 하나의 특징을 더 갖게 되었는데

그것이 바로 Transform이다.

Transform은 (부모자식 관계를 맺을 수 있고 위치 회전 크기를 지정할 수 있는 것)

 

 

 

경계선을 사이로 두고 위에 나타나는 것들은 SceneComponent로 부터 상속 받은 것들 이다. 

 

 

그래서 Capsule Component에 관계로 

이 밑에 Mesh나 Arrow가  Capsule의 부모의 상대적 위치로 지정되어 있는 것이다. 

 

그래서 SceneComponent를 눌러보면 트랜스폼이 있는 것을 볼 수 있다 

(Arrow는 아님) 

 

 

그리고 

 

 

 

Movement는 트랜스폼이 없는 걸 볼 수 있다. 

 

 

그래서 실제로는 이 Component들도 멤버 변수로 들어온 것이다. 

+누르면서 추가했던 변수도 멤버 변수이다.

 


 

6.블루프린트 주석 

 

 

해당 노드에서 우클릭을 하면 해당 함수에 대한 주석을 달 수 있고 

 

전체 클래스에 대한 주석을 달려면 전체에 드래그 하고 

우클릭 하여서 주석을 달아 줄 수 있다. 

 

코멘트 그룹 생성

이런식으로 코멘트 그룹을 생성해서 해당 블루프린트에대해 그룹으로 묶어 주석을 달아 줄 수 있다. 

 

 

 

 

 

다음시간) 

 

[Unreal Engine] 블루 프린트_머터리얼 생성 | bluePrint Materials Color

Unreal Engine 4 /4.26버전으로 수업을 진행합니다. 해당 내용은 수업에 대한 내용과 함께 개인적인 생각 및 정보를 토대로 글을 씀을 알립니다. 본 내용에 대하여 상업적으로 이용 및 배포를 금합니

ppatabox.tistory.com

 


 

 

 

 

 

 

  1. BeginPlay 이벤트 : 게임이 시작될 때 (런타임 모드가 시작될때 ) [본문으로]
  2. ActorBeineOverlap 이벤트 : 런타임 모드에서 Actor끼리 겹칠 때 (서로간의 충돌)  [본문으로]
  3. Tick 이벤트 : 업데이트 될때 매 프레임마다 call되는 것  [본문으로]
  4. Delta Seconds: 이전 프레임하고 현재프레임의 시간 [본문으로]
  5. Print String : 해당 넣어둔 문자열을 출력해준다 [본문으로]
  6. Duration : 몇 초 동안 출력될 것인가 [본문으로]
728x90
728x90
LIST
profile

평생 공부하는 빠타박스 블로그 : Learning is Happiness

@공부하는 PPATABOX

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!