개발자로/Unreal
[Unreal4]UFunction
ReasonyB
2022. 8. 10. 17:42
함수 선언
함수는 2가지 기본 형태
- 일반 C++ 함수
- UFunction 함수 => 특수 문법을 사용해 함수 지정자를 통해 선언에 함수 관련 추가 정보 지정
함수 지정자
BlueprintAuthorityOnly | 네트워크 전권이 있는 머신에서 함수 실행 경우, 블루프린트 코드에서만 실행 됨. |
BlueprintCallable | 블루프린트 또는 레벨 블루프린트 그래프에서 실행 |
BlueprintCosmetic | 장식성이라도 데디케이트 서버에서는 실행하지 않음. |
BlueprintGetter | 블루프린트 노출 프로퍼티에 대한 접근자로 사용. BlueprintPure와 BlueprintCallable 의미를 내포 |
BlueprintImplementableEvent | 블루프린트 또는 레벨 블루프린트에서 구현할 수 있음. |
BlueprintInternalUseOnly | 최종 사용자에게 노출시키지 말아야 함을 의미. |
BlueprintNativeEvent | 블루프린트로 덮어쓰도록 디자인 되었지만 기본 내장 구현. 메인 함수 이름 끝에 _Implementation를 붙인 함수를 추가로 선언한 뒤 코드 작성. 자동 생성 코드는 블루프린트로 오버라이드를 찾지 못하면 "_Implementation" 매서드 호출 |
BlueprintPure | 어떤 식으로든 소유 오브젝트에 영향을 주지 않으며, 블루프린트 또는 레벨 블루프린트 그래프에서 실행할 수 있음. |
BlueprintSetter | 블루프린트 노출 프로퍼티의 뮤테이터로 사용. BlueprintCallable 내포. |
CallInEditor | 디테일 패널의 버튼을 통해 선택된 인스턴스 상의 에디터에서 호출 가능. |
Client | 호출되는 오브젝트를 소유한 클라이언트에서만 실행. 메인 함수 이름 뒤에 _Implementattion를 붙인 함수를 추가로 선언. 자동 생성 코드는 필요할 때 "_Implementation" 매소드를 호출 |
CustomTunk | UnrealHeaderTool 코드 생성기는 이 함수에 대해 썽크를 생산하지 않으며, 사용자가 제공해 줘야 함. |
Exec | 콘솔 내에서 실행 가능. 실행 명령은 특정 클래스 안에서 선언했을때만 작동. |
NetMulticast | 서버 로컬 및 모든 클라이언트에 리플리케이트 되는 상황 양쪽에서, 액터의 NetOwner와 상관 없이 실행. |
Reliable | 네트워크로 리플리케이트, 데역폭이나 네트워크 오류와 상관 없이 도착이 보장. Client/Server 키워드와 함께 사용했을 때만 유효 |
SealedEvent | 서브 클래스에서 덮어쓸 수 없음. 이벤트에서만사용. 함수의 경우 static 혹은 final로 선언하면 봉인 가능. |
ServerRequest | RPC(Remote Procedure Call) 서비스 요청 |
ServerResponse | RPC 서비스 반응 |
Sever | 서버에서만 실행. 메인 함수 이름 뒤에 _Implementattion를 붙인 함수를 추가로 선언. 자동 생성 코드는 필요할 때 "_Implementation" 매소드를 호출. |
Unreliable | 네트워크로 리플리케이트 되지만 대역폭 제한이나 네트워크 오류로 인해 실패할 수 있음. Client/Server와 함께 사용했을 때 유효 |
WithValidation | 메인 함수 이름 뒤에 _Validation을 붙인 함수를 추가로 선언. 이 함수는 같은 파라미터를 받으며, 메인 함수 호출 진행 여부를 나타내는 bool을 반환 합니다. |
메타 지정자
AdvancedDisplay = "Parameter1, Parameter2, .." | 쉼표로 구분된 파라미터 목록이(UI 확장이 필요한) 고급핀으로 표시 |
AdvancedDisplay = N | N번째 이후 모든 파라미터는 (UI 확장이 필요한) 고급 핀으로 표시. |
ArrayParam = "Parameter1, ..." | BlueprintCallable 함수는 Call Array Function 노드 사용, 나열된 파라미터는 와일드 카드 배열 프로퍼티로 취급 |
ArrayTypeDependentParams = "Parameter" | ArrayParam 사용 시, ArrayParam 목록 내 모든 파라미터 유형을 결정하는 파라미터 지정. |
AutoCreateRefTerm = "Parameter1, ...." | |
차후 작성.. | |
함수 파라미터 지정자
Out - 파라미터를 참조 전달로 선언하여 함수가 수정할 수 있게함.(cpp에서는 값을 필히 바꿔야하는 참조 변수)
Optional - 특정함수 파라미터를 호출자 편의를 위한 선택 사항으로 만듦. 옵셔널 파라미터 값은 호출자가 함수에 의존할 값으로 지정하지 않는 값.
델리게이트
Delegate로 C++ 오브젝트 상의 멤버 함수 호출을 일반적인 유형으로 안전한 방식으로 할 수 있음. 델리케이트를 사용하여 임의 오브젝트의 멤버 함수에 동적으로 바인딩 시킬수 있으며 그런 다음 그 오브젝트에서 함수를 호출 할 수 있다.
델리게이트 오브젝트는 복사해도 완벽히 안전하다. 값으로 전달하나 보통 추천하지 않는데, heap에 메모리를 할당해야하기 때문. 가급적 델리케이트는 항상 참조 전달해야함.
- 싱글-캐스트
- 멀티-캐스트
- 이벤트
- 다이내믹(UObject, Serialize 가능)
타이머
타이머를 통해 딜레이 이후 또는 일정시간에 걸쳐 수행하도록 스케줄을 잡습니다.