рдПрдХрддрд╛: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬрд╛рдирдирд╛

рдЫрд╡рд┐

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

рдпреВрдирд┐рдЯреА рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, ScriptableObject рдПрдХ рдХреНрд▓рд╛рд╕ рдХреЛрдб рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЧреЗрдо рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рд╛рдЭрд╛ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред

рдпреВрдирд┐рдЯреА рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдХрд╛рд░рдг рд╣реИрдВред рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░реАрдлрд╝реИрдм рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдлреНрд▓рд╛рдИрд╡реЗрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред

рдкрдЯрдХрдерд╛ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдФрд░ рд▓рд╛рдн, рдЬреЛ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рд╖рдп рд╣реЛрдЧрд╛, рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред рд╣рдо рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рддрд▓рд╡рд╛рд░ рд╡реНрдпрд╛рдкрд╛рд░реА рдХреА рджреБрдХрд╛рди рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреЗрдВрдЧреЗ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рддрд▓рд╡рд╛рд░реЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ, рдХреАрдорддреЛрдВ рдФрд░ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред

рдиреЛрдЯ: рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХрддрд╛ рд╕рдВрдкрд╛рджрдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдореВрд▓ C # рдЬреНрдЮрд╛рди рд╣реЛред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдХрддрд╛ рдХреМрд╢рд▓ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЕрдиреНрдп рдПрдХрддрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦреЗрдВ ред

рдХрд╛рдо рдкрд░ рд▓рдЧрдирд╛


рдЖрдЗрдП рд╣рдо рдЙрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИред

рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрдЧрд╣ рдкрд░ рдЦреЛрд▓ рджреЗрдВ рдФрд░ рдпреВрдирд┐рдЯреА рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓-рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВред

рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦрд░реАрдж рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдирд┐рдореНрди рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:


  • _Setup : рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
  • рджреГрд╢реНрдп : рдПрдХ рддрд▓рд╡рд╛рд░ рд╡реНрдпрд╛рдкрд╛рд░реА рджреГрд╢реНрдп рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреВрд░реЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рджреГрд╢реНрдп рдХреЛ рдЦреЛрд▓реЗрдВред
  • рд╕реНрдХреНрд░рд┐рдкреНрдЯ : рдЕрдм рддрдХ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рджреМрд░рд╛рди рд╣рдо рдирдП рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред
  • рддрд▓рд╡рд╛рд░ рдЪрд┐рд╣реНрди : рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рддрд▓рд╡рд╛рд░реЛрдВ рдХреЗ рдЪрд┐рддреНрд░ рд╣реИрдВред
  • Sword Prefabs : Sword Merchant рд╕реАрди рдореЗрдВ рд╕рднреА рддрд▓рд╡рд╛рд░реЛрдВ рдХреЗ рдкреНрд░реАрдлрд╝реИрдм рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд▓рд╡рд╛рд░ рд╡реНрдпрд╛рдкрд╛рд░реА рджреГрд╢реНрдп рдкрд░ рдЬрд╛рдПрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:


рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рддреИрдпрд╛рд░ рдХрд░рдирд╛


рдпрд╣ рдкрд╣рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ!

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

рдЗрд╕ рд╢реНрд░реЗрдгреА рдХреЗ рдЕрдВрджрд░, MonoBehaviour рдмрдЬрд╛рдп MonoBehaviour рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ:

 public class SwordData : ScriptableObject { } 

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

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдлрд╝реАрд▓реНрдб рд╕реЗ рднрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрд╡реЙрд░реНрдб рдорд░реНрдЪреЗрдВрдЯ UI рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрдиреБрд░реВрдк рд╕рднреА рдбреЗрдЯрд╛ рд╣реЛрдВрдЧреЗред

 public class SwordData : ScriptableObject { [SerializeField] private string swordName; [SerializeField] private string description; [SerializeField] private Sprite icon; [SerializeField] private int goldCost; [SerializeField] private int attackDamage; } 

  • рддрд▓рд╡рд╛рд░рдирд╛рдо : string , рдЬрд┐рд╕рдореЗрдВ рддрд▓рд╡рд╛рд░ рдХрд╛ рдирд╛рдо рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рд╡рд┐рд╡рд░рдг : string , рдЬрд┐рд╕рдореЗрдВ рддрд▓рд╡рд╛рд░ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • рдЖрдЗрдХрди : рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЬрд┐рд╕рдореЗрдВ рддрд▓рд╡рд╛рд░ рдЖрдЗрдХрди рд╣реЛрдЧрд╛ред
  • рдЧреЛрд▓реНрдбрдХреЙрд╕реНрдЯ : рд╕реЛрдиреЗ рдореЗрдВ рддрд▓рд╡рд╛рд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ ред
  • attackDamage : рдЬрдм рддрд▓рд╡рд╛рд░ рд╕реЗ рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреНрд╖рддрд┐ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ ред

рдиреЛрдЯ: SerializeField

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

рдкреНрд░рддреНрдпреЗрдХ рддрд▓рд╡рд╛рд░ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ SwordData рдХреЗ рдЕрдкрдиреЗ рдЕрджреНрд╡рд┐рддреАрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЗрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЛ рдмрдирд╛ рд╕рдХреЗрдВ, рд╣рдореЗрдВ рдПрд╕реЗрдЯ рдореЗрдиреВ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

SwordData рд╡рд░реНрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдХрд░ рд╣рдорд╛рд░реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрд╕реЗрдЯ рдореЗрдиреВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

 [CreateAssetMenu(fileName = "New SwordData", menuName = "Sword Data", order = 51)] public class SwordData : ScriptableObject 

  • рдлрд╝рд╛рдЗрд▓рдирд╛рдо : рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рддреЗ рд╕рдордп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╛рдоред
  • рдореЗрдиреВрдирд╛рдо : рдПрд╕реЗрдЯ рдореЗрдиреВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдоред
  • рдЖрджреЗрд╢ : рдПрд╕реЗрдЯ рдореЗрдиреВ рдореЗрдВ рдПрд╕реЗрдЯ рдкреНрд▓реЗрд╕рдореЗрдВрдЯред рдПрдХрддрд╛ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ 50 рдХреЗ рдПрдХ рдХрд╛рд░рдХ рдХреЗ рд╕рд╛рде рдЙрдкрд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреА рд╣реИред рдЕрд░реНрдерд╛рдд, 51 рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдорд╛рди рдПрд╕реЗрдЯ рдореЗрдиреВ рдХреЗ рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред

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


рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирдИ рддрд▓рд╡рд╛рд░ рдбреЗрдЯрд╛ рдПрд╕реЗрдЯ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:


рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдирд╛


рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯреЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдирд╛рдордХ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдХрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВрдЧреЗ , рдФрд░ рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрдиреНрдп рдлрд╝реЛрд▓реНрдбрд░ рдЬрд┐рд╕реЗ Sword Data рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

рдирдП рдмрдирд╛рдП рдЧрдП Sword Data рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЕрдВрджрд░, рд╣рдорд╛рд░реА рдкрд╣рд▓реА Sword Data рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдПрдВред

рдирдИ рддрд▓рд╡рд╛рд░ рдбреЗрдЯрд╛ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЕрднреА рднреА рдкрд╣рд▓реЗ рд╕реЗ рддрдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╛рдо рдлрд╝рд╛рдЗрд▓рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рд╕рд╛рдд рддрд▓рд╡рд╛рд░ рдбреЗрдЯрд╛ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╣ рдмрд╛рд░ ( Ctrl / Cmd + D ) рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░реЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рддрд▓рд╡рд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХред рдЕрдм рдкреНрд░реАрдлрд╝реЗрдмреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ:


Sword Data рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдкрд╣рд▓реЗ Sword Data рдПрд╕реЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рд╡рд┐рдВрдбреЛ рдХреЛ рджреЗрдЦреЗрдВ:


рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рд╕рдВрдкрддреНрддрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рддрд▓рд╡рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рдПрдЧреАред рдкреНрд░рддреНрдпреЗрдХ рддрд▓рд╡рд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рднрд░реЗрдВред рд╣рдорд▓реЗ рдХреЗ рджреМрд░рд╛рди рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╡рд┐рд╡рд░рдг, рд╕реЛрдиреЗ рдореЗрдВ рдореВрд▓реНрдп рдФрд░ рдиреБрдХрд╕рд╛рди рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рдЪрд┐рд╣реНрди рд╕реНрдкреНрд░рд╛рдЗрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ, Sword Icons рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╕рдВрдЧрдд рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:


рдмрдзрд╛рдИ! рдЖрдкрдиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдВрдкрддреНрддрд┐рдпрд╛рдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреАрдВред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрдм рд╣рдо рдЗрди Scriptable рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреЗрдЯреНрдЯрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХреЗрдВред SwordData.cs рдЦреЛрд▓реЗрдВ рдФрд░ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рддрд╣рдд рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:

  public string SwordName { get { return swordName; } } public string Description { get { return description; } } public Sprite Icon { get { return icon; } } public int GoldCost { get { return goldCost; } } public int AttackDamage { get { return attackDamage; } } 

Sword.cs рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

  [SerializeField] private SwordData swordData; // 1 private void OnMouseDown() // 2 { Debug.Log(swordData.name); // 3 Debug.Log(swordData.Description); // 3 Debug.Log(swordData.Icon.name); // 3 Debug.Log(swordData.GoldCost); // 3 Debug.Log(swordData.AttackDamage); // 3 } 

рдпрд╣рд╛рдБ рд╣рдордиреЗ рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рд╣реИ:

  1. рдЗрд╕ рддрд▓рд╡рд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХрдВрдЯреЗрдирд░ред
  2. OnMouseDown рдПрдХ рдмрд┐рд▓реНрдЯ-рдЗрди MonoBehaviour рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╛рдИрдВ рдорд╛рдЙрд╕ рдмрдЯрди рджрдмрд╛рддреЗ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рд╣рдорд╛рд░реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг

рдПрдХрддрд╛ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рд╡рд┐рдВрдбреЛ рдкрд░ рдЬрд╛рдПрдВред рддрд▓рд╡рд╛рд░ рдкреНрд░реАрдлрд╝реИрдм рдореЗрдВ 1_Longsword рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ Sword.cs рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ Sword рдбреЗрдЯрд╛ рдЪрд░ рдореЗрдВ рдЙрдЪрд┐рдд 1_Longord рдбреЗрдЯрд╛ рдПрд╕реЗрдЯ рдЬреЛрдбрд╝реЗрдВ:


рдПрдХрддрд╛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреНрд▓реЗ ( Ctrl / Cmd + P ) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рд╕рдмрд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдХреА рддрд▓рд╡рд╛рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:


рдХрдВрд╕реЛрд▓ рдХреЛ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ Sword Data рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд╕реЗ рдорд┐рд▓рддреА-рдЬреБрд▓рддреА рд╣реЛред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддреЗ рд╣реИрдВред рддрд▓рд╡рд╛рд░ рдХреЗ рддрд▓рд╡рд╛рд░ рдбреЗрдЯрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рддрд▓рд╡рд╛рд░ рдбреЗрдЯрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдШрдЯрдирд╛ рдпреЛрдЧреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдПрдБ


рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛, рдФрд░ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЖрдк рдЧреЗрдо рдХреЗ рдЕрдВрджрд░ рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА UI рдХреЗ рд╕рд╛рде Sword Data рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛!

рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рддреНрд╡рд░рд┐рдд рдФрд░ рдЧрдВрджреЗ рд╕рд┐рдВрдЧрд▓рдЯрди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ ...

... рдЕрд░реНрдерд╛рддреН, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдПрдБ! рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рдЪреНрдЫ рдФрд░ рдмрдбрд╝реЗ рдХрд░реАрдиреЗ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред

рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдпреВрдирд┐рдЯреАрд╡реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЗрдо рдЗрд╡реЗрдВрдЯ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред

рдЦреЗрд▓ рдХреА рдШрдЯрдирд╛рдУрдВ рдФрд░ рд╢реНрд░реЛрддрд╛рдУрдВ


рд▓рд┐рдкрд┐рдпреЛрдВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдБ: GameEvent.cs рдФрд░ GameEventListener.cs ред рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "New Game Event", menuName = "Game Event", order = 52)] // 1 public class GameEvent : ScriptableObject // 2 { private List<GameEventListener> listeners = new List<GameEventListener>(); // 3 public void Raise() // 4 { for (int i = listeners.Count - 1; i >= 0; i--) // 5 { listeners[i].OnEventRaised(); // 6 } } public void RegisterListener(GameEventListener listener) // 7 { listeners.Add(listener); } public void UnregisterListener(GameEventListener listener) // 8 { listeners.Remove(listener); } } 

рдпрд╣рд╛рдБ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреНрдпрд╛ рд╣реИ:

  1. рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рдореЗрдиреВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ GameEvent рдЬреЛрдбрд╝рддрд╛ рд╣реИред
  2. GameEvent рдПрдХ Scriptable Object рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ ScriptableObject рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  3. GameEventListeners рдХреА рд╕реВрдЪреА GameEvent рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рдЬрд╛рдПред
  4. рд╕рднреА GameEvent рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ред
  5. рдЕрдВрддрд┐рдо рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд GameEventListener рдкрд╣рд▓рд╛ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ (рдЕрдВрддрд┐рдо рдмрд╛рд░, рдкрд╣рд▓реЗ рдмрд╛рд╣рд░ рдЖрдУ)ред
  6. рдкреНрд░рддреНрдпреЗрдХ рдпреВрдирд┐рдЯреАрд╡реЗрдВрдЯ рдЧреЗрдордИрд╡реЗрдВрдЯ рд▓рд╛рдИрд▓реЗрдирд░реНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред
  7. рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ GameEventListeners рдХреЛ рдЗрд╕ GameEvent рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
  8. рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ GameEventListeners рдХреЛ рдЗрд╕ GameEvent рд╕реЗ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред


 using UnityEngine; using UnityEngine.Events; // 1 public class GameEventListener : MonoBehaviour { [SerializeField] private GameEvent gameEvent; // 2 [SerializeField] private UnityEvent response; // 3 private void OnEnable() // 4 { gameEvent.RegisterListener(this); } private void OnDisable() // 5 { gameEvent.UnregisterListener(this); } public void OnEventRaised() // 6 { response.Invoke(); } } 

рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдХреЛрдб рдореЗрдВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд╣реИ:

  1. рдПрдХрддрд╛ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ред
  2. GameEvent рдХрд┐ рдпрд╣ GameEventListener рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдЧрд╛ред
  3. рдЬрдм рдЧреЗрдордИрд╡реЗрдВрдЯ рдЗрд╡реЗрдВрдЯ рдЗрд╕ GameEventListener рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ, рддреЛ рдпреВрдирд┐рдЯреАрдИрд╡реЗрдВрдЯ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЙрдард╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  4. рдЗрд╕ GameObject рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ GameEventListener рдХреЗ рд▓рд┐рдП рдПрдХ GameEvent рдмрд╛рдВрдзрдирд╛ред
  5. рдЗрд╕ GameObject рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдкрд░ GameEventListener рд╕реЗ GameEvent рдмрд╛рдВрдзрдирд╛ред
  6. рдЬрдм рдПрдХ GameEvent рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ GameEventListener рдХреЛ UnityEvent рдШрдЯрдирд╛ рдХрд╣рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ? рдХреБрдЫ рднреА рдирд╣реАрдВ, рдЖрдк рдЗрд╕реЗ рд╕рдордп рдХреЗ рд╕рд╛рде рд╕рдордЭ рд▓реЗрдВрдЧреЗ!

рд╕рдВрдкрд╛рджрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг


рдПрдХрддрд╛ рд╕рдВрдкрд╛рджрдХ рдкрд░ рд▓реМрдЯреЗрдВ рдФрд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЧреЗрдо рдЗрд╡реЗрдВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ >> ScriptableObjectsред рдлрд┐рд░ рдПрд╕реЗрдЯ рдореЗрдиреВ рд╕реЗ рд╕рд╛рдд рдЧреЗрдо рдЗрд╡реЗрдВрдЯ рдмрдирд╛рдПрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкреНрд░рддреНрдпреЗрдХ рддрд▓рд╡рд╛рд░ рдбреЗрдЯрд╛ рдПрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ред рдЙрдиреНрд╣реЗрдВ рдирдП рдЧреЗрдо рдЗрд╡реЗрдВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦреЗрдВред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде Sword.cs рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдмрджрд▓реЗрдВ:

  [SerializeField] private GameEvent OnSwordSelected; // 1 private void OnMouseDown() { OnSwordSelected.Raise(); // 2 } 

рдпрд╣ рдХреЛрдб рддрд▓рд╡рд╛рд░ рд╡реНрдпрд╛рдкрд╛рд░реА рдХреА рджреБрдХрд╛рди рдореЗрдВ рджреЛ рд╕рдВрднрд╛рд╡рдирд╛рдПрдБ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:

  1. рддрд▓рд╡рд╛рд░ рдЪреБрдирддреЗ рд╕рдордп рдЧреЗрдо рдЗрд╡реЗрдВрдЯ рдХреА рдкреАрдврд╝реАред
  2. рдИрд╡реЗрдВрдЯ рдкреАрдврд╝реА рдЬрдм рдЖрдк рддрд▓рд╡рд╛рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╣реЗрдЬреЗрдВред рдЕрдм, рддрд▓рд╡рд╛рд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрджрд╛рдиреБрдХреНрд░рдо GameObject рдореЗрдВ, рдЗрд╕реА OnSwordSelected рдИрд╡реЗрдВрдЯ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред


рдкреНрд░рддреНрдпреЗрдХ рддрд▓рд╡рд╛рд░ рдореЗрдВ рдЕрдм рдЙрд╕ рдШрдЯрдирд╛ рдХреА рдПрдХ рдХрдбрд╝реА рд╣реЛрддреА рд╣реИ рдЬреЛ рддрд▓рд╡рд╛рд░ рдХреЛ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдпреВрдЖрдИ рдПрдХреАрдХрд░рдг


рдЕрдм рдЖрдкрдХреЛ рдпреВрдЖрдИ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдкреНрд░рддреНрдпреЗрдХ рддрд▓рд╡рд╛рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╕рдордп рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрд╡реЙрд░реНрдб рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред

рдпреВрдЖрдИ рд▓рд┐рдВрдХ


UI рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ UI рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдЗрдП SwordMerchant.cs рдирд╛рдордХ рдПрдХ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

 using UnityEngine; using UnityEngine.UI; public class SwordMerchant : MonoBehaviour { [SerializeField] private Text swordName; // 1 [SerializeField] private Text description; // 2 [SerializeField] private Image icon; // 3 [SerializeField] private Text goldCost; // 4 [SerializeField] private Text attackDamage; // 5 } 

рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рд╛:

  1. NameText рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкрд╛рда рдШрдЯрдХ рдХрд╛ рд╕рдВрджрд░реНрднред
  2. DescriptionText рдЦреЗрд▓ рд╡рд╕реНрддреБ рдХреЗ рдкрд╛рда рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред
  3. Sword_Icon рдЦреЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЫрд╡рд┐ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред
  4. рдЧреЛрд▓реНрдбрдЯреЗрдХреНрд╕реНрдЯ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХрд╛ рд▓рд┐рдВрдХред
  5. AttackText рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХрд╛ рд▓рд┐рдВрдХред

рдЙрдкрд░реЛрдХреНрдд рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ Hierarchy рд╡рд┐рдВрдбреЛ рдХреЗ SwordMerchantCanvas >> SwordMerchantPanel рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВред GameObject SwordMerchantCanvas рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдлрд┐рд░ рд╕рднреА рд▓рд┐рдВрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:


рд╢реНрд░реЛрддрд╛рдУрдВ рдФрд░ рдпреВрдЖрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ


рд╕рднреА рддрд▓рд╡рд╛рд░реЛрдВ рдХреА рдПрдХ рдШрдЯрдирд╛ рд╣реИ рдХрд┐ UI рдЧреЗрдордПрд╡реЗрдВрдЯрд▓рд┐рд╕реНрдЯрдирд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ OnSwordSelected рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП GameObject SwordMerchantCan.in рдореЗрдВ рдПрдХ GameEventListener рдЬреЛрдбрд╝реЗрдВ:


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

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпреВрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рдПрдЧреАред рдирд┐рдореНрди рд╡рд┐рдзрд┐ SwordMerchant.cs рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

  public void UpdateDisplayUI(SwordData swordData) { swordName.text = swordData.SwordName; description.text = swordData.Description; icon.sprite = swordData.Icon; goldCost.text = swordData.GoldCost.ToString(); attackDamage.text = swordData.AttackDamage.ToString(); } 

рдЗрд╕ рдкрджреНрдзрддрд┐ рд╕реЗ рдПрдХ Sword Data рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ UI рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд Sword рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЧреЛрд▓реНрдбрдХреЙрд╕реНрдЯ рдФрд░ рдЕрдЯреИрдХрдбреИрдореЗрдЬ рдПрдХ int рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рдорд╛рд░реА рдирдИ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ GameEventListener рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реА рдЧрдИ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЛрдИ рдирд╣реАрдВ (рдСрдмреНрдЬреЗрдХреНрдЯ) рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ SwordMerchantCanvas рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдбреНрд░реЙрдк-рдбрд╛рдЙрди рдореЗрдиреВ рд╕реЗ рд░реЗрдВрдбрдо рдУрдирд▓реА рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХреЗ рджрд╛рдИрдВ рдУрд░ SwordMerchant.UpdateDisplayUI рдЪреБрдиреЗрдВред

рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ OnSwordSelected рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рд╣реА Sword рдбреЗрдЯрд╛ рдПрд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рдЕрдм рд╣рдо рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд▓рд╡рд╛рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпреВрдЖрдИ рддрджрдиреБрд╕рд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ!


рдЪреВрдВрдХрд┐ рд╣рдо рдЧреЗрдо рдЗрд╡реЗрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдмрд╕ SwordMerchantCanvas рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдм рдХреБрдЫ рдЕрднреА рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреЗрд╡рд▓ рдпреВрдЖрдИ рдХреЗ рдмрд┐рдирд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рддрд▓рд╡рд╛рд░ рдкреНрд░реАрдлреИрдмреНрд╕ SwordMerchantCanvas рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВред

рдЖрдЧреЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ?


рдпрджрд┐ рдЖрдк рдХрд╣рд╛рдиреА рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рддрд▓рд╡рд╛рд░ рдХреЛ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдзреНрд╡рдирд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рддрд▓рд╡рд╛рд░ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдФрд░ OnSwordSelected рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реБрдирдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдПрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рдорд╛рд░реА рдПрдХрддрд╛ рд╡реАрдбрд┐рдпреЛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреЗрдЦреЗрдВ рдпрд╛ рдПрдХрддрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрдврд╝реЗрдВред

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


All Articles