RPC 검증 함수
UFUNCTION(Server, Reliable, WithValidation) void Server_SendMessage(const FString& Message);WithValidation : RPC 호출에 대한 검증을 위한 옵션
- 클라이언트가 RPC를 호출할 때, 메세지 등의 데이터가 올바른지 검증하여 문제발생이나 보안 위협을 방지.
- RPC를 호출 시, 서버가 클라이언트가 보낸 데이터를 검증할 수 있도록 하기 위한 두 개의 함수가 필요
_Implementation 함수 (실제 동작을 수행)
_Validate 함수 (데이터의 유효성을 검사)
- 공백이나 글자수의 부족, 초과에 대한 경고 메세지를 추가할 계획
ChatWiget 생성
- 채팅을 작성할 위젯을 만들어 Controller에서 위젯을 생성해 UI를 연동하기 위해 먼저 만들기
- 블루프린트에서 이벤트로 할까도 했으나 다른 것도 코드로 작성한 김에 다 코드로 작성
NativeConstruct()
- Widget 클래스를 작성하려고 자료를 찾다보니 이걸 써야한다고 함
- 이벤트 바인딩이나 추가 초기화 작업을 위한 함수로써 위젯의 생성자(Constructor)는 객체가 메모리에 할당될 때 호출되나, 위젯의 하위 구성(자식 위젯, 바인딩된 위젯 등)이 완전히 생성되거나 초기화 되지 않은 상태일수 있음.
-> 모든 구성 요소가 완전히 생성되고 난 후 호출되어 UI요소들이 존재하는 시점에서 초기화 작업을 진행하게 해줌.- OnTextCommitted 이벤트를 처리하기 위해 이 위젯이 완전히 생성된 후에 이벤트 바인딩을 해야함. 이때 NativeConstruct에서 해줌
- 위젯이 한 번 구성될 때 호출되고, 위젯이 다시 생성될 때마다 호출할 수 있음.
void UChatWidget::NativeConstruct() { Super::NativeConstruct(); if (ChatInputBox) { ChatInputBox->OnTextCommitted.AddDynamic(this, &UChatWidget::OnTextCommitted); } }
- Super::NativeConstruct() : 반드시 부모의 NativeConstruct를 먼저 호출
- OnTextCommitted 이벤트에 델리게이트를 추가
위젯을 초기화 하는 함수로 기억(초기화는 중요)