※프로젝트 파일 옮겨가고 싶을 때 : Config / Content / 프로젝트 파일 3개 압축
새로 언리얼엔진 시작 시, 저번에 만들었던 프로젝트를 바로 보고싶다면,
편집 - 에디터 개인설정 - 일반 / 로드 & 저장 - 시작 시 레벨 로드 : Last Opened
블루프린트 변수 / 함수
콘텐츠 브라우저1 - 블루프린트 클래스 - 액터 추가(BP_Practice)
더블클릭으로 BP_Practice의 블루프린트 에디터 열어준다.
내 블루프린트 - 변수 카테고리의 +버튼을 통해서 변수를 추가해줄 수 있다. 함수도 마찬가지로 추가가 가능하다.
이렇게 멤버를 추가하면 Construction Script와 이벤트그래프 이 두 개의 탭에서 다뤄줄 수 있는데,
우선은 이벤트그래프부터 알아보자.
노드가 현재 비활성화 되어있는데, 기본적으로 자주 쓰이는 노드들이 나와있는 모습이다.
이번에 다뤄볼 BeginPlay 이벤트를 제외하고 나머지 노드는 삭제해준다.
※ BeginPlay 이벤트 : 함수, 엔진에 의해서 콜백됨. 이 클래스가 시작될 때 호출된다.
이번에는 프로그래밍의 가장 기초인 Hello World!를 출력해볼 것이다.
이벤트그래프에서 우클릭을 통해 Print String 노드를 추가해주고 아까 남겨둔 BeginPlay 이벤트 노드와 실행 핀을
이어줄 것이다.
BP_Practice의 클래스를 여기까지 만들어두고, 뷰포트에서 인스턴스를 추가해주고 플레이를 하면
뷰포트 좌측 상단에 잠깐 Hello가 나왔다가 사라지는 것을 볼 수 있다.
이번에는 출력되는 시간을 늘려주기 위해서 다시 BP_Practice로 돌아간다.
아까봤던 Print String 노드의 개발 전용 화살표를 눌러 늘려주면 세부 사항들이 나온다.
- In String : 출력 내용
- Print to Screen : 스크린에 출력할지 말지
- Print to Log : 출력 로그에 출력할지 말지
- Text Color : 출력 색상
- Duration : 출력 시간
변수를 통해서 Duration을 조절해주기 위해서 내 블루프린트 - 변수 +(PrintStringDuration)를 추가해줍니다.
그리고 추가한 PrintStringDuration변수를 클릭하면 우측에 디테일 탭에 변수 세부 내용이 보일 것이다.
우리가 사용해줄 Duration변수는 float 형이기 때문에 PrintStringDuration변수의 유형을 플로트로 바꿔준다.
그리고 밑에 기본값 카테고리가 보일텐데, 컴파일을 한번 해주어야 값이 보인다.
따라서 5.0 값으로 바꿔준 뒤, PrintStringDuration변수를 이벤트그래프에 Get으로 넣어준다.
Print String의 Duration과 PrintStringDuration 핀을 서로 연결해준 뒤, 다시 플레이 해보면 Hello의 출력 시간이 늘어난 것을
볼 수 있다.
이처럼 따로 Duration변수를 만들어주지 않아도, Print String의 Duration을 우클릭 - 변수로 승격을 선택해주면
바로 변수가 생성되고 자동으로 노드가 연결되어 있는 것을 볼 수 있다.
변수의 디테일 세부내용을 살펴보자.
- 인스턴스 편집가능 : 뷰포트에 올려놓고 바로바로값 수정 가능
체크 유무에 따라서 내 블루프린트 - 변수 우측에 눈 아이콘이 바뀐다.
- 블루프린트 읽기 전용 : 읽기 전용이라 수정이 불가능하여 이벤트그래프에서 Get 노드만 추가 가능
- 툴팁 : 주석과 같은 역할
- 프라이빗 : 해당 클래스의 하위에서 접근하지 못하도록 막음(public, private밖에 없음)
- 카테고리 : 많은 변수를 사용할 때 논리적으로 구분하기 쉽도록 해주는 기능(카테고리가 생김)
EventGraph|Begin Play 식으로 |(or)을 붙여서 하위 카테고리 추가 가능
- 슬라이더 범위 : 기본값 슬라이더의 최소 최대값을 지정해주는 것
- 값 범위 : 기본값 직접 입력하여 넣는 값의 최소 최대값을 지정해주는 것(값범위가 슬라이더범위보다 우선이다)
블루프린트 구조체
콘텐츠 브라우저1에서 블루프린트(블루프린트 클래스 아님) - 구조체(Structer)로 추가를 해줍니다.
그리고 Structer를 더블클릭해서 들어가준다.
새 변수를 통해 변수를 3개 만들고, 모두 Boolean 타입으로 만들어준다.
그리고 밑의 기본값에서 각각 변수들이 true / false값 중 무엇을 가질지 기본값을 정해줄 수 있다.
이제 다시 BP_Practice로 돌아와서 구조체 변수(StructureVariable)를 추가해준다.
구조체 변수로 사용할 StructureVariable 변수의 디테일에서 변수 유형에 아까 만든 Structer이름의 구조체를 넣어준다.
그리고 한번 컴파일 해주면 디테일 / 기본값이 나오는 것을 볼 수 있는데, 아까 만들어둔 Structer 구조체와 똑같은
기본값 설정으로 나오는 것을 볼 수 있다.
따라서 Structer 구조체의 기본값을 변경하고 StructureVariable 변수의 기본값을 보면 같이 변경되어 있는 것을 볼 수 있다.
※ 주어준 구조체의 기본값과 변수의 기본값이 같은 상황일 때, 구조체 기본값을 변경해버리면 해당
구조체 유형을 가지고있던 변수의 기본값도 같이 변경됨.
이번에는 이벤트그래프에서 이름없는 임시 구조체를 만들어 보겠다.
이벤트그래프 우클릭 - make structer 검색(Structer 만들기)를 선택해준다.
여기서는 Structer의 Member변수 0, 1만 true로 바꿔줄 것이다.
이어서 아까 BP_Practice에서 변수로 추가했던 StructureVariable 변수를 Set 노드로 추가해준 뒤,
서로 핀을 연결해줄 것이다.
이렇게 연결해주면 StructureVariable 변수의 기본값이었던 Member0 = true의 값이
임시 구조체의 값 Member0과 1 = true로 Set되어서 바뀌게 된다.
이어서 Set 변수(StructureVariable)의 핀을 쭉 드래그했다가 놓고, mem만 검색하면 바로 나오는
Structer의 멤버 설정 노드를 추가해주면, 바로 연결이 된 채로 추가가 된다.
멤버 설정에서 멤버 변수를 표시하고 싶다면, Structer의 멤버 설정 노드를 클릭 후, 오른쪽 디테일 탭 - 기본 카테고리를
펼쳐보면 각각 Member0/1/2의 체크가 해제되어 있다. 체크해주면 바로 노드에 표시가 되어 보일 것이다.
이를 통해 변경해줄 멤버 변수만 노드에 나오도록 표시해줄 수 있다.
Structer의 멤버 설정 노드 - 디테일에서 Member2만 핀으로 표시해줄 것이다.
이제 Member2는 Member0과 1의 or연산을 통해서 값을 정해줄 것이다.
or연산을 하기 위해서 StructureVariable 변수의 멤버변수에 접근해줄 필요가 있다.
이벤트그래프에서는 StructureVariable를 Set 변수로 추가 후, StructureVariable노드 핀을 드래그 후
break를 검색하면 나오는 Structer 분해 노드를 추가해줌으로 써 멤버 변수에 접근이 가능해진다.
이제 Member0과 Member1의 OR 연산을 위해 OR을 검색하여 OR Boolean 노드를 추가하여 핀을 연결해준다.
따라서 Member0 OR Member1의 값이 Member2의 값에 들어가게 된다.
아마 결과는 Member0/1/2 모두 true의 값이 나올 것이다.
노드 코멘트 추가하기
블루프린트에 노드가 많아지면 많아질수록 구분하기 점점 어려워질 수도 있다.
따라서 노드끼리 묶어서 원하는 코멘트를 추가할 수 있다.
나중에 보았을 때, 이게 무슨 역할을 하는 노드인지 알아보기 쉽게 하기위해 추가해두면 좋은 방법 중 하나이다.
'언리얼엔진' 카테고리의 다른 글
6. Asset / Character 살펴보기 (0) | 2023.05.06 |
---|---|
5. Construction Script / 이벤트 / 함수 / 매크로 / 와일드카드 (0) | 2023.05.03 |
4. 블루프린트 함수 디테일 (0) | 2023.05.03 |
2. 블루프린트 클래스 계층구조 / Static Mesh Actor 생성하기 (0) | 2023.05.01 |
1. 언리얼엔진 설치 및 기능 알아보기 (0) | 2023.04.30 |