Tiếp tục trong series UE4 Framework hôm nay là về PlayerState. Cùng tìm hiểu PlayerState là gì và tại sao, đặc biệt là trong môi trường online, nó lại quan trọng như vậy nhé.
Nhiệm vụ của PlayerState
Nếu như PlayerController được coi là bộ não con người, Character/Pawn là thân thể, thì PlayerState chính là căn cước công dân, ID hay nôm na là chứng minh nhân dân vậy đó. Các đặc tính cơ bản của PlayerState có thể kể đến như là
- Lưu trữ thông tin đặc trưng của một cá thể (PlayerController) như là tên, id, ping, địa chỉ,…
- Trong môi trường online, PlayerState tồn tại ở mọi máy kết nối, cho phép người dùng có thể truy cập thông tin đặc trưng của những người kết nối trong cùng một session.
Cách tạo một PlayerState
Cũng như cách tạo của các class đã đề cập ở bài viết trước
Sử dụng PlayerState
Để sử dụng PlayerState, ta phải gắn class vừa tạo trong GameMode settings. Cách thức y như chúng ta làm cho PlayerController hay GameState nhé!
Một số chức năng và đặc tính của PlayerState
Để có thể trỏ đến PlayerState để sử dụng, có thể dễ dàng gọi thẳng PlayerState trong PlayerController và Character
Tips: Khi trỏ tới PlayerState ở BeginPlay của cả Character/PlayerController, giá trị trả về thường sẽ là nullptr (không tồn tại). Đó là bởi vì PlayerState cần thời gian để có thể kích hoạt, thường khá là nhỏ (0.5s thường là quả đủ để có thể dùng được). PlayerState ở PlayerController sẽ tồn tại sớm hơn với PlayerState ở Character nhé, bởi vì PlayerController bao giờ cũng có trước Character!
Ở blueprints, một số biến căn bản của PlayerState có thể kể đến như là
Ý nghĩa của các biến có lẽ quá hiển nhiên rồi 😀 Có một lưu ý nhỏ là, giá trị Ping trả lại là Byte, chứ không phải là ms, bạn nào muốn hiển thị ms như mọi game thì nhớ chia 4 nhé!
Cách đơn giản và phổ dụng nhất để những người chơi cùng một session truy xuất PlayerState của những người chơi khác đó là thông qua mảng PlayerArray trong GameState ta đã đề cập từ bài viết trước
Kết luận
PlayerState về chức năng thì đơn giản chi như trên. Căn bản thì nó là một cái Actor để lưu trữ các thông tin của người sở hữu và có thể truyền đến cho những người khác. Nếu cá nhân bạn phát triển game single hay offline, thì có vẻ PlayerState sẽ không quan trọng lắm đâu :p
Comments