함수 선언
함수 는 두 가지 기본 형태로 존재할 수 있습니다. 일반 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 |
특정 함수 파라미터를 호출자 편의를 위한 선택사항으로 만듭니다. 이 옵셔널 파라미터 값은 호출자가 함수에 의존할 값으로 지정하지 않는 값입니다. 예를 들어 |
함수 구현
클래스 헤더 파일에 선언되는 함수는 클래스 소스 파일에 정의가 제공됩니다.
델리게이트
레퍼런스 및 사용법 정보는
타이머
레퍼런스 및 사용법 정보는