UE4 | рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг # 5 | рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рд╕реВрдЪрдирд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг

рд▓реЗрдЦреЛрдВ рдХреА рд╕реВрдЪреА

UE4 | рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЗрдиреНрд╡реЗрдВрдЯрд░реА # 1 | DataAsset рдкрд░ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕
UE4 | рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ # 2 рдХреЗ рд▓рд┐рдП рдЗрдиреНрд╡реЗрдВрдЯрд░реА | рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдХреЛ C ++ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
UE4 | рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЗрдиреНрд╡реЗрдВрдЯрд░реА # 3 | рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рд╕рдВрд░рдЪрдирд╛
UE4 | рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг # 4 | рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдирд╛ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛
UE4 | рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг # 5 | рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рд╕реВрдЪрдирд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо C ++ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди 4 рдореЗрдВ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдПрдХ рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╢рд┐рдХреНрд╖рд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдерд╛ред рд▓реЗрдХрд┐рди, рдЬрдм рдкрдврд╝рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рддреНрд░рд╛ рддрдХ рдкрд╣реБрдБрдЪ рдЧрдпрд╛, рддреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред




рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЦреЗрд▓ рдореЗрдВ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ (рджреБрд░реНрд▓рдн рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде) рдХреА рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдореВрд▓ рд╣рдореЗрд╢рд╛ рд╣реИред рдкреНрд░рддрд┐рдпрд╛рдВ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдкрд░ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ, рдпрд╛рдиреАред рд╡реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ рдФрд░ рдХреМрди рдирд╣реАрдВред

рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬрд╝ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдХреЛ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг

рд╣рдо рджреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдордВрдЪ рдкрд░ рдПрдХ рдШрди рд╣реИред рдЗрд╕ рдШрди рдХрд╛ рдореВрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рд╡рд╣ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдкрд╣рд▓реА рдкреНрд░рддрд┐ рдкрд╣рд▓реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдФрд░ рджреВрд╕рд░реА рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдЧреАред рдпрджрд┐ рд╣рдо рдЙрдирдХреЗ рдХрд┐рд╕реА рднреА рдЧреНрд░рд╛рд╣рдХ рдкрд░ рд╡рд╕реНрддреБ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореВрд▓ рдХреЛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ ред рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╣реЛрдЧрд╛, рдХреЗрд╡рд▓ рдЗрд╕ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдЖрдк рдореВрд▓ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ 2 рдореБрдЦреНрдп рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ:


  1. рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣реЗрдВрдЧреАред
  2. рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рдореВрд▓ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХреА рдЬрд╛рдПрдВрдЧреАред



рдЕрдм рдЬрдм рдЧреЗрдо рдХреЗ рдореВрд▓ рдирд┐рдпрдо рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рд╕реВрдЪрдирд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рд╡рд┐рдХрд▓реНрдк рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдореИрдВ 3 рддрд░реАрдХреЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рджреЛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рддреАрд╕рд░рд╛ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдФрд░ рдХрд╣реАрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рддрднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдкрд╣рд▓реЗ рджреЛ рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рд╕реАрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред


  1. рдкреНрд░рддрд┐рдХреГрддрд┐ (рдкреНрд░рддрд┐рдХреГрддрд┐)ред
  2. RPC ( рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ )ред
  3. рдЯреАрд╕реАрдкреАред


    рдкреНрд░рддрд┐рдХреГрддрд┐


рдмрд┐рдирд╛ рд╢рд░реНрдд рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдкрд╣рд▓реА рдмрд╛рдд:

рдкреНрд░рддрд┐рдХреГрддрд┐ рдПрдХ-рддрд░рдлрд╝рд╛ рд╕рдбрд╝рдХ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХ рд╣реА рдХрд╛рдо рдХрд░рддреА рд╣реИред
рджреВрд╕рд░реА рдмрд╛рдд рдЬреЛ рдЖрдкрдХреЛ рдЬрд╛рдирдирд╛ рдЬрд░реВрд░реА рд╣реИ:
рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдпрд╛ рд╡рд░реНрдЧ рдЪрд░ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рддреАрд╕рд░рд╛, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╢рд░реНрдд:
рдкреНрд░рддрд┐рдХреГрддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рд╕рд░реНрд╡рд░ рдкрд░ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рд╣реЛред

рдпрджрд┐ рдмреНрд▓реВрдкреНрд░рд┐рдВрдЯ рдореЗрдВ рд╣рдо рд╕рд╣реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЯрд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ C ++ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд #include "UnrealNetwork.h" рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдирд╣реАрдВ рднреВрд▓рдирд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд╕реНрддреБ рдкреНрд░рддрд┐рдХреГрддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:


bReplicates = true; 

рдпрджрд┐ рд╣рдо рдЖрдВрджреЛрд▓рди рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


 bReplicateMovement = true; 

рдпрджрд┐ рдЖрдкрдХреЛ рдЬреБрдбрд╝реЗ рдШрдЯрдХ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 Component->SetReplicates(true); 

рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред


рдЪрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд╕рд╛рде, рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВред
рдЪрд▓рд┐рдП .h рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВред
рдЖрдк рдмрд╕ рдЪрд░ рдХреЛ рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ:


 UPROPERTY(Replicated) bool bMyReplicatedVariable; 

рдпрд╛ рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреБрдЫ рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЪрд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЪрд░ рдХреНрдпрд╛ рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рддрдереНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред


 UPROPERTY(ReplicatedUsing = OnRep_MySomeFunction) TArray<float> MyReplicatedArray; UFUNCTION() void OnRep_MySomeFunction(); 

рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛рдирд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдирдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рднрд╛рдЧ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЗрд╡рд▓ рдПрдХ рдЪрд░ рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдИ рдХрдорд╛рдВрдб рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд░рдгреА рдХреЛ рддрддреНрд╡реЛрдВ рдореЗрдВ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдмрд┐рдЯреНрд╕ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЕрдм рд╣рдо .cpp рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ
рд╣рдо рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реНрдерд┐рддрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:


 void AMySuperActor::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const { Super::GetLifetimeReplicatedProps(OutLifetimeProps); DOREPLIFETIME(AMySuperActor, bMyReplicatedVariable); DOREPLIFETIME_CONDITION(AMySuperActor, MyReplicatedArray, COND_OwnerOnly); } 

рдкрд╣рд▓рд╛ рдЪрд░ bMyReplicatedVariable рдПрдХ рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдмрд┐рдирд╛ рд╢рд░реНрдд рдХреЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛, MyReplicatedArray , рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ AMySuperActor рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдорд╛рд▓рд┐рдХ рд╣реИ, рдЬрдм рддрдХ рдХрд┐, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдПрдХ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ ред




RPC ( рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ )


рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ "UnrealNetwork.h" рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк RPC рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ RPC рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдмрд┐рдирд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдХреА рдкрд╛рд╡рддреА рдХреЗ рд╕рд╛рде рдЖрддреА рд╣реИред рдпрджрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░реЗрд╖рдХ рд╢рд╛рдВрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рд╡рд╣ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд░реНрд╕рд▓ рдбрд┐рд▓реАрд╡рд░ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ (рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рднреЗрдЬреЗрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд╕рдорд╛рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИ), рддреЛ рджреВрд╕рд░реЗ рдореЗрдВ, рдкреНрд░реЗрд╖рдХ рдХреЛ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдкрд╛рд░реНрд╕рд▓ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рднреЗрдЬрд╛ рдФрд░ рднреВрд▓ рдЧрдпрд╛ред
рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ - рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рд╡рд┐рдзрд┐ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЕрдХреНрд╕рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдЬрд╣рд╛рдВ рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИ, рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╣рдорд╛рд░реЗ рдкреИрдХреЗрдЬ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддреАрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:


 UFUNCTION(Reliable, Server, WithValidation) void ServerTestFunction(float MyVariable); void ServerTestFunction_Implementation(float MyVariable); bool ServerTestFunction_Validate(float MyVariable); 

рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп - рд░рд╕реАрдж рдХреА рдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рд░реНрд╕рд▓ред
рд╕рд░реНрд╡рд░ - рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬ рд░рд╣рд╛ рд╣реИред
WithValidation - рдкреИрдХреЗрдЬ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдмреВрд▓ ServerTestFunction_Validate (рдлреНрд▓реЛрдЯ MyVariable) рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╢рд░реНрддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рд╣реИ ред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╡рд▓ рдЙрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
ServerTestFunction (MyVariable рдлреНрд▓реЛрдЯ) - рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рд╡рд╣ рд╕рд░реНрд╡рд░ рдХреЛ рдХреБрдЫ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕реЗ .cpp рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
ServerTestFunction_I рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдлрд╝реНрд▓реЛрдЯ MyVariable) - рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реАрдзреЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ ...
ServerTestFunction_Validate (рдлрд╝реНрд▓реЛрдЯ MyVariable) - рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рд╕рд╣реА рд╣реИ , рддреЛ ServerTestFunction_Im рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдлрд╝реНрд▓реЛрдЯ MyVariable) рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред


рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рдкреИрдХреЗрдЬ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ:


 UFUNCTION(Reliable, Client, WithValidation) 

рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдирд╛рдо, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреИрдХреЗрдЬ рдХрд╣рд╛рдБ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдПред


 UFUNCTION(Reliable, Client, WithValidation) void ClientTestFunction(float MyVariable); void ClientTestFunction_Implementation(float MyVariable); bool ClientTestFunction_Validate(float MyVariable); 

рдЕрдиреНрдпрдерд╛, рдпрд╣ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕ рдмрд╛рд░ рдкреИрдХреЗрдЬ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХ рдЬрд╛рддрд╛ рд╣реИред


рд╕рд░реНрд╡рд░ рд╕реЗ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ, рдЬрдм рдкреИрдХреЗрдЬ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдЬрд╛рддрд╛ рд╣реИред


 UFUNCTION(Reliable, NetMulticast, WithValidation) void NetMulticastTestFunction(); void NetMulticastTestFunction_Implementation(); bool NetMulticastTestFunction_Validate(); 

рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЖрдк рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ NetMulticast рдХреЗ рд▓рд┐рдП, рд╕рддреНрдпрд╛рдкрди рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ



рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг
 /*       ,     */ void ADreampaxActor::DoSomethingWithOtherActor(ADreampaxOtherActor * SomeOtherActor) { /*  ,      */ if (Role < ROLE_Authority) { /*    ,    ,      */ ServerDoSomethingWithOtherActor(SomeOtherActor); /*   ,        */ return; } /*         */ SomeOtherActor->Destroy(true); } /*      ,    ServerDoSomethingWithOtherActor(SomeOtherActor)     */ void ADreampaxCharacter::ServerDoSomethingWithOtherActor_Implementation(ADreampaxOtherActor * SomeOtherActor) { /*   ,       */ DoSomethingWithOtherActor(SomeOtherActor); } /*     ,    ServerDoSomethingWithOtherActor_Implementation(ADreampaxOtherActor * SomeOtherActor) */ bool ADreampaxCharacter::ServerDoSomethingWithOtherActor_Validate(ADreampaxOtherActor * SomeOtherActor) { /*      true,   ,   -    fasle.       */ return true; } 

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореИрдиреБрдЕрд▓ рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ, рдЬрд┐рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
'рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЗрдВрдЬрди 4' рдиреЗрдЯрд╡рд░реНрдХ рдХрдореНрдкреЗрдВрдбрд┐рдпрдо


рдЕрдЧрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╣рдо рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЬрд╛рдПрдВред


рдкреБрдирд╢реНрдЪ рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдЕрд╢реБрджреНрдзрд┐ рдпрд╛ рддреНрд░реБрдЯрд┐ рдирдЬрд╝рд░ рдЖрддреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред

Source: https://habr.com/ru/post/hi420233/


All Articles