개발자로/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 가능)

 

타이머

타이머를 통해 딜레이 이후 또는 일정시간에 걸쳐 수행하도록 스케줄을 잡습니다.