Choose your operating system:
Windows
macOS
Linux
함수 선언
함수
는 두 가지 기본 형태로 존재할 수 있습니다. 일반 C++ 함수 또는
UFunction
입니다. C++ 함수 및
UFunction
둘 다
.h
클래스 헤더 파일에 선언됩니다. C++ 함수를 선언할 때는 표준 C++ 문법을 사용합니다.
UFunction
은 특수 문법을 사용해서
함수 지정자
를 통해 선언에 함수 관련 추가 정보를 지정합니다.
UFUNCTION([specifier, specifier, ...], [meta(key=value, key=value, ...)])
ReturnType FunctionName([Parameter, Parameter, ...])
UFunction
은 C++ 구현이 있고, C++ 코드 안에서 호출할 수 있으며, 함수 본문 내에서 다른 C++ 함수 또는
UFunction
에 대한 호출을 포함할 수 있다는 점에서 C++ 함수와 동일하게 작동합니다. 그러나 몇 가지 다른 부분이 있습니다. 예를 들어
블루프린트 비주얼 스크립팅
시스템 안에서 호출 또는 오버라이드 가능합니다.
BlueprintCallable
,
BlueprintImplementableEvent
, 또는`BlueprintPure
지정자로 선언된
UFunction
은 (자세한 내용은 아래 [함수 지정자](#함수지정자) 참고) 블루프린트에 노출됩니다. 클래스의 디폴트 프로퍼티 내 델리게이트로 할당할 수도 있습니다.
Input
클래스에서 함수에 입력 동작 또는 축을 바인딩할 때 흔히 사용되는 기법이구요. 리플리케이션 콜백으로도 사용됩니다. 즉 연결된 변수가 변경되어 네트워크에 리플리케이트될 때
UFunction` 이 호출된다는 뜻입니다. 실행 함수로 선언해서 플레이어가 플레이 도중 게임내 콘솔에서 호출하도록 할 수 있는 유일한 함수 유형이기도 합니다.
함수 지정자
함수 선언시, Function Specifier (함수 지정자)를 선언에 붙여 함수가 엔진과 에디터의 다양한 부분과 어떻게 작동하는지를 제어할 수 있습니다.
함수 지정자 |
효과 |
|
---|---|---|
|
네트워크 전권이 있는 머신(서버, 데디케이티드 서버, 싱글플레이어 게임)에서 이 함수를 실행하는 경우, 블루프린트 코드에서만 실행됩니다. |
|
|
이 함수는 블루프린트 또는 레벨 블루프린트 그래프에서 실행할 수 있습니다. |
|
|
이 함수는 장식성이라 데디케이티드 서버에서는 실행되지 않습니다. |
|
|
이 함수는 블루프린트 노출 프로퍼티에 대한 접근자로 사용됩니다. 이 지정자는
|
|
|
이 함수는 블루프린트 또는 레벨 블루프린트 그래프에서 구현할 수 있습니다. |
|
|
이 함수는 최종 사용자에게 노출시키지 말아야 함을 나타냅니다. |
|
|
이 함수는
블루프린트
로 덮어쓰도록 디자인되었지만, 기본 내장 구현이 있기도 합니다. 메인 함수 이름 끝에
|
|
|
이 함수는 어떤 식으로든 소유 오브젝트에 영향을 주지 않으며, 블루프린트 또는 레벨 블루프린트 그래프에서 실행할 수 있습니다. |
|
|
이 함수는 블루프린트 노출 프로퍼티의 뮤테이터로 사용됩니다. 이 지정자는
|
|
|
이 함수는 디테일 패널의 버튼을 통해 선택된 인스턴스 상의 에디터에서 호출할 수 있습니다. |
|
|
이 함수를 블루프린트 편집 툴에 표시할 때의 카테고리를 지정합니다. 중첩 카테고리는 ` |
` 연산자로 표시합니다. |
|
이 함수는 호출되는 오브젝트를 소유한 클라이언트에서만 실행됩니다. 메인 함수 이름 뒤에
|
|
|
UnrealHeaderTool 코드 생성기는 이 함수에 대해 썽크를 생산하지 않으며, 사용자가 제공해 줘야 합니다. |
|
|
이 함수는 게임 내 콘솔에서 실행할 수 있습니다. 실행 명령은 특정 클래스 안에서 선언했을 때만 작동합니다. |
|
|
이 함수는 서버 로컬 및 모든 클라이언트에 리플리케이트되는 상황 양쪽에서, 액터의
|
|
|
이 함수는 네트워크로 리플리케이트되며, 대역폭이나 네트워크 오류와 상관 없이 도착이 보장됩니다.
|
|
|
이 함수는 서브클래스에서 덮어쓸 수 없습니다.
|
|
|
이 함수는 RPC (Remote Procedure Call) 서비스 요청입니다. |
|
|
이 함수는 RPC 서비스 반응입니다. |
|
|
이 함수는 서버에서만 실행됩니다. 메인 함수 이름 뒤에
|
|
|
이 함수는 네트워크로 리플리케이트되지만 대역폭 제한이나 네트워크 오류로 인해 실패할 수 있습니다.
|
|
|
메인 함수 이름 뒤에
|
메타데이터 지정자
메타데이터 지정자 사용법은 일반적인 클래스, 함수, 인터페이스 지정자와는 다릅니다.
함수 메타 태그 |
효과 |
---|---|
|
쉼표로 구분된 파라미터 목록이 (UI 확장이 필요한) 고급 핀으로 표시됩니다. |
|
N 번째 이후 모든 파라미터는 (UI 확장이 필요한) 고급 핀으로 표시됩니다. 예로 'AdvancedDisplay=2' 는 첫째 둘째를 제외한 전부가 고급 파라미터가 됩니다. |
|
|
|
|
|
나열된 파라미터는 참조 전달이라 할지라도, 핀을 연결하지 않고 놔둬도 자동 생성 기본값을 갖습니다. 블루프린트 편의 기능입니다. |
|
블루프린트 함수 라이브러리의 스태틱
|
|
이 함수는 내부 구현 디테일로, 다른 함수 또는 노드 구현에 사용됩니다. 블루프린트 그래프에 바로 노출되지는 않습니다. |
|
이 함수는 블루프린트의 소유 오브젝트에서만 호출 가능합니다. 다른 인스턴스에서는 호출할 수 없습니다. |
|
|
|
|
|
|
|
나열된 파라미터는 모두 와일드카드로 취급됩니다. 이 지정자는
커스텀
|
|
|
|
이 함수를 참조하는 블루프린트는 컴파일 경고를 통해 사용자에게 함수가 폐기되었음을 알립니다.
|
|
함수가 폐기되면, 그것을 사용하는 블루프린트를 컴파일하려 할 때 표준 폐기 경고에 이 메시지가 추가됩니다. |
|
이 함수는 개발 모드에서만 실행됩니다. 출시 제품에 포함시키지 않을 것으로 기대되는 디버그 출력같은 기능에 좋습니다. |
|
블루프린트의 이 노드 이름은 코드 생성 이름이 아닌 여기 제공된 값으로 대체됩니다. |
|
|
|
|
|
함수 호출 대상 오브젝트를 나타내는 데 사용되는 "self"(셀프) 핀을 숨깁니다. 셀프 핀은 호출하는 블루프린트 클래스와 호환되는
|
|
|
|
블루프린트 그래프에서 함수 호출을 위한 노드를 배치할 때처럼, 이 함수 검색 시 사용할 수 있는 키워드 세트를 지정합니다. |
|
잠복성 동작을 나타냅니다. 잠복성 동작은
|
|
잠복성
|
|
|
|
|
|
블루프린트 함수 라이브러리에서만 유효합니다. 이 함수는 소유 클래스의 일반
|
|
부모 클래스 선택기 대화창처럼 전체 툴팁 표시가 버거운 상황에서 사용할 짧은 툴팁입니다. |
|
코드 코멘트에서 자동 생성되는 툴팁을 덮어씁니다. |
|
이 함수는 액터 생성 도중 호출하는 것이 안전하지 않습니다. |
|
|
함수 파라미터 지정자
Out |
파라미터를 참조 전달로 선언하여 함수가 수정할 수 있도록 합니다. |
Optional |
특정 함수 파라미터를 호출자 편의를 위한 선택사항으로 만듭니다. 이 옵셔널 파라미터 값은 호출자가 함수에 의존할 값으로 지정하지 않는 값입니다. 예를 들어
|
함수 구현
클래스 헤더 파일에 선언되는 함수는 클래스 소스 파일에 정의가 제공됩니다.
델리게이트
Delegate (델리게이트)로 C++ 오브젝트 상의 멤버 함수 호출을 일반적이고 유형적으로 안전한 방식으로 할 수 있습니다. 델리게이트를 사용하여 임의 오브젝트의 멤버 함수에 동적으로 바인딩시킬 수 있으며, 그런 다음 그 오브젝트에서 함수를 호출할 수 있습니다. 호출하는 곳에서 오브젝트의 유형을 몰라도 말이지요.
델리게이트 오브젝트는 복사해도 완벽히 안전합니다. 델리게이트는 값으로 전달 가능하나 보통 추천할 만 하지는 않는데, heap 에 메모리를 할당해야 하기 때문입니다. 가급적이면 델리게이트는 항상 참조 전달해야 합니다.
델리게이트는 싱글-캐스트(형 변환)와 멀티-캐스트 모두 지원되며, 디스크에 안전하게 Serialize 시킬 수 있는 "다이내믹" 델리게이트도 물론입니다.
레퍼런스 및 사용법 정보는 델리게이트 문서를 참고하세요.
타이머
타이머를 통해 딜레이 이후 또는 일정 시간에 걸쳐 동작을 수행하도록 스케쥴을 잡습니다. 예를 들어, 플레이어가 어떤 아이템을 습득하면 10 초간 무적이 되었다가 원래대로 돌아가는 것입니다. 또는, 플레이어가 독가스로 가득찬 방에 있는 동안 매 초마다 대미지를 적용할 수도 있습니다. 이러한 효과 모두 타이머를 통해 이뤄낼 수 있습니다.
레퍼런스 및 사용법 정보는 게임플레이 타이머 문서를 참고하세요.