рд╣рдордиреЗ рдПрдХрддрд╛ рдореЗрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛

рдХрдИ рдорд╣рд╛рди рдПрдХрддрд╛ рдкреНрд░рджрд░реНрд╢рди рд▓реЗрдЦ рдФрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИрдВред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдпрд╛ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдЗрди рд▓реЗрдЦреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдП рдЧрдП рдХрджрдореЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ рд╣реИ, рд╕рд╛рде рд╣реА рдЙрди рдХрджрдореЛрдВ рдиреЗ рд╣рдореЗрдВ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХрдо рд╕реЗ рдХрдо https://learn.unity.com/ рдкрд░ рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ ред

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

  • рдЧреИрд░-рдЕрдиреБрдХреВрд▓рд┐рдд рд╢реЗрдбреНрд╕
  • C # рдореЗрдВ рдЕрдирдзрд┐рдХреГрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдПрдВ рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдХреА рд╡рдЬрд╣ рд╕реЗ рдереАрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ C # рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рднреА рдХрд┐ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЬреАрд╡рди рдореЗрдВ рдПрдХ рднреА shader рдирд╣реАрдВ рд▓рд┐рдЦрд╛)ред

рдХрдордЬреЛрд░рд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ


рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рд╣реИ; рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред

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


рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрдирд╛рдПрдБ

рдпрджрд┐ рдЖрдк "рд░реИрдВрдбрдо рд▓реИрдЧ рдЗрди рдпреВрдирд┐рдЯреА" рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдиреБрд░реЛрдз рдХреЛ Google рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ред рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╡рд╕реНрддреБ (рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдЪрд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдПрдХрддрд╛ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рд╕рдордп-рд╕рдордп рдкрд░ рдЧрдВрджрдЧреА рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдФрд░ рд╕реНрдореГрддрд┐ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕рдордп рдХреА рдПрдХ рдкрд╛рдЧрд▓ рд░рд╛рд╢рд┐ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдлреНрд░реЗрдо рджрд░ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдореЗрдВ рдЬрдВрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдЦреЛрдЬреЗрдВ?


рдмрд╕ CPU рдЙрдкрдпреЛрдЧ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ -> рдкрджрд╛рдиреБрдХреНрд░рдо рджреГрд╢реНрдп рдЪреБрдиреЗрдВ -> GC Alloc рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ


рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╡рд┐рдХрд▓реНрдк

рдЧреЗрдордкреНрд▓реЗ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЬреАрд╕реА рдЖрд╡рдВрдЯрди рдХреЙрд▓рдо рдореЗрдВ рдХреБрдЫ рд╢реВрдиреНрдп рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЖрдкрдХрд╛ рдХрд╛рдо рд╣реИред

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

рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

  • рдХреВрдбрд╝реЗ рдХрд╛ рдирд┐рд╕реНрддрд╛рд░рдг
  • рд▓реАрдб рд╕рдордп рдореЗрдВ рдХрдореА

рднрд╛рдЧ 1: рдХрдЪрд░рд╛ рд╕реЗ рд▓рдбрд╝рдирд╛


рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХрдЪрд░реЗ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред рдпрд╣ рд╕рдмрд╕реЗ рдореМрд▓рд┐рдХ рдЬреНрдЮрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рднреА рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рд┐рдП; рд╡реЗ рд╣рд░ рдЦреАрдВрдЪ / рдорд░реНрдЬ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╣рдорд╛рд░реЗ рджреИрдирд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЧрдП рд╣реИрдВред

рдкрд╣рд▓рд╛ рдирд┐рдпрдо: рдЕрджреНрдпрддрди рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдИ рдирдИ рд╡рд╕реНрддреБ рдирд╣реАрдВ


рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЕрдкрдбреЗрдЯ, рдлрд┐рдХреНрд╕реНрдбрдЕрдкрдбреЗрдЯ рдФрд░ рд▓реЗрдЯрдЕрдкрдбреЗрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ "рдирдП" рдХреАрд╡рд░реНрдб рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП ред рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рд╡рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реИред

рдХрднреА-рдХрднреА рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдПрдХрддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЫрд┐рдкрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рджреВрд╕рд░рд╛ рдирд┐рдпрдо: рдПрдХ рдмрд╛рд░ рдмрдирд╛рдПрдВ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ!


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕реНрдЯрд╛рд░реНрдЯ рдФрд░ рдЕрд╡реЗрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдирд┐рдпрдо рдкрд╣рд▓реЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрджреНрдпрддрди рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ "рдирдП" рдХреАрд╡рд░реНрдб рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред

рдХреЛрдб рд╣реИ рдХрд┐:

  • рдирдП рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ
  • рдХрд┐рд╕реА рднреА рдЦреЗрд▓ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ

рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдпрд╛ рдЬрд╛рдЧрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ:

рдкреНрд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдХрд╛ рдЖрд╡рдВрдЯрди, рдЙрдирдХрд╛ рд╕рдорд╛рд╢реЛрдзрди (рд╕реНрдкрд╖реНрдЯ) рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

//Bad code private List<GameObject> objectsList; void Update() { objectsList = new List<GameObject>(); objectsList.Add(......) } //Better Code private List<GameObject> objectsList; void Start() { objectsList = new List<GameObject>(); } void Update() { objectsList.Clear(); objectsList.Add(......) } 

рд▓рд┐рдВрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдФрд░ рдЙрдирдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 //Bad code void Update() { var levelObstacles = FindObjectsOfType<Obstacle>(); foreach(var obstacle in levelObstacles) { ....... } } //Better code private Object[] levelObstacles; void Start() { levelObstacles = FindObjectsOfType<Obstacle>(); } void Update() { foreach(var obstacle in levelObstacles) { ....... } } 

рд╡рд╣реА FindGameObjectsWithTag рд╡рд┐рдзрд┐ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдирдпрд╛ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИред

рддреАрд╕рд░рд╛ рдирд┐рдпрдо: рддрд╛рд░ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдкреНтАНрдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ


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

рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЖрдк рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░ рд╕рдХрддреЗ рд╣реИрдВ:

 //Bad code void Start() { text = GetComponent<Text>(); } void Update() { text.text = "Player " + name + " has score " + score.toString(); } //Better code void Start() { text = GetComponent<Text>(); builder = new StringBuilder(50); } void Update() { //StringBuilder has overloaded Append method for all types builder.Length = 0; builder.Append("Player "); builder.Append(name); builder.Append(" has score "); builder.Append(score); text.text = builder.ToString(); } 

рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА рдХрдИ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рдкреВрд░реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрдерд┐рд░ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рджреЛ UI.Text рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдореЗрдВ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рдкрд╛рда "рдкреНрд▓реЗрдпрд░" + рдирд╛рдо + "рдХрд╛ рд╕реНрдХреЛрд░" рд╣реЛрддрд╛ рд╣реИ , рдЬрд┐рд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдХреЛрд░ рдорд╛рди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрд╢рд╛ рд╕реНрдЯреИрдЯрд┐рдХ рд▓рд╛рдЗрдиреНрд╕ рдХреЛ рд╕рд╣реА рдорд╛рдпрдиреЗ рдореЗрдВ рд╕реНрдЯреИрдЯрд┐рдХ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯрд╛рд░реНрдЯ рдпрд╛ рдЕрд╡реЗрдХ рдореЗрдердб рдореЗрдВ рдЬреЗрдирд░реЗрдЯ рдХрд░реЗрдВ ред рдЗрд╕ рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рдж, рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди Int.ToString (), Float.ToString (), рдЖрджрд┐ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдереЛрдбрд╝рд╛ рдХрдЪрд░рд╛ рдЕрднреА рднреА рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред

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

 public static readonly string[] NUMBERS_THREE_DECIMAL = { "000", "001", "002", "003", "004", "005", "006",.......... 

рдЪреМрдерд╛ рдирд┐рдпрдо: рдХреИрд╢ рд╡реИрд▓реНрдпреВрдЬ рдПрдХреНрд╕реЗрд╕ рдореЗрдердбреНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛


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

 //Bad Code void Update() { gameObject.tag; //or gameObject.name; } 

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

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

рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рдЕрдбреЙрдкреНрдЯреЗрдб рдПрдХреНрд╕реЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛрдб рдХреЗ рджреЛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ:

 //Bad Code void Update() { //Allocates new array containing all touches Input.touches[0]; } //Better Code void Update() { Input.GetTouch(0); } //Bad Code void Update() { //Returns new string(garbage) and compare the two strings gameObject.Tag == "MyTag"; } //Better Code void Update() { gameObject.CompareTag("MyTag"); } 

рдкрд╛рдВрдЪрд╡рд╛рдВ рдирд┐рдпрдо: рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдореЗрдореЛрд░реА рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рди рдХрд░реЗрдВ


рдХреБрдЫ рдПрдХрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЧреИрд░-рдореЗрдореЛрд░реА рд╡рд┐рдХрд▓реНрдк рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рд╕рднреА рдХрд╛рд░реНрдп рднреМрддрд┐рдХреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рд╣рдорд╛рд░реА рдЯрдХреНрдХрд░ рдХреА рдорд╛рдиреНрдпрддрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ

 Physics2D. CircleCast(); 

рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЧреИрд░-рдореЗрдореЛрд░реА рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

 Physics2D. CircleCastNonAlloc(); 

рдХрдИ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рднреА рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрд╢рд╛ NonAlloc рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ ред

рдЫрдард╛ рдирд┐рдпрдо: LINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ


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

рд╕рд╛рддрд╡рд╛рдВ рдирд┐рдпрдо: рдПрдХ рдмрд╛рд░ рдмрдирд╛рдПрдВ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рднрд╛рдЧ 2


рдЗрд╕ рдмрд╛рд░ рд╣рдо рдкреВрд▓рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдкреВрд▓рд┐рдВрдЧ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ: https://learn.unity.com/tutorial/object-pooling

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

рдЖрдард╡рд╛рдВ рдирд┐рдпрдо: рдкреИрдХреЗрдЬрд┐рдВрдЧ-рдкрд░рд┐рд╡рд░реНрддрди (рдмреЙрдХреНрд╕рд┐рдВрдЧ) рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЪреМрдХрд╕!


рдмреЙрдХреНрд╕рд┐рдВрдЧ рдХрдЪрд░рд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ! рд▓реЗрдХрд┐рди рдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ? рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд╛рд░, рдмреЙрдХреНрд╕рд┐рдВрдЧ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдк рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдорд╛рди рдкреНрд░рдХрд╛рд░ (int, float, bool, рдЖрджрд┐) рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рдореБрдХреНрдХреЗрдмрд╛рдЬреА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рд╣рдордиреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдкрдирд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рдгрд╛рд▓реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдореЗрдВ рдЕрд╕реАрдорд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдПрдХ рдбрд┐рдХреНрд╢рдирд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 Dictionary<string, object> data; 

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реЗрдЯрд░ рднреА рд╣реИ рдЬреЛ рдЗрд╕ рдбрд┐рдХреНрд╢рдирд░реА рдореЗрдВ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ:

 public Action SetAttribute(string attribute, object value) { data[attribute] = value; } 

рдпрд╣рд╛рдВ рдмреЙрдХреНрд╕рд┐рдВрдЧ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИред рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 SetAttribute("my_int_value", 12); 

рддрдм рдореВрд▓реНрдп "12" рдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреЗ рдЕрдзреАрди рд╣реИ рдФрд░ рдпрд╣ рдХрдЪрд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

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

 Dictionary<string, object> data; Dictionary<string, bool> dataBool; Dictionary<string, int> dataInt; ....... 

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рдкрдЯрд╛рди рд╣реИрдВ:

 SetBoolAttribute(string attribute, bool value) SetIntAttribute(string attribute, int value) 

рдФрд░ рдЗрди рд╕рднреА рдЙрдкрдирд┐рд╡реЗрд╢рдХреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рдорд╛рди рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд╛рд░реНрдп рдХрд╣рддреЗ рд╣реИрдВ:

 SetAttribute<T>(ref Dictionary<string, T> dict, string attribute, T value) 

рдореБрдХреНрдХреЗрдмрд╛рдЬреА рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИ!

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓реЗрдЦ рдореЗрдВ рдкрдврд╝реЗрдВ https://docs.microsoft.com/cs-cz/dotnet/csharp/programming-guide/types/boxing-and-unboxing ред

рдиреМрд╡рд╛рдВ рдирд┐рдпрдо: рдЪрдХреНрд░ рд╣рдореЗрд╢рд╛ рд╕рдВрджреЗрд╣ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ


рдпрд╣ рдирд┐рдпрдо рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдореГрддрд┐ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╕рднреА рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреЛрдб рдХреЛ рд▓реВрдк рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

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

рдирд┐рдпрдо 10: рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдХреЛрдИ рдХрдЪрд░рд╛ рдирд╣реАрдВ


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

рднрд╛рдЧ 2: рд░рдирдЯрд╛рдЗрдо рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдирд╛


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

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

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдЗрди рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдмрд╣реБрдд рдЦрд░рд╛рдм рдкрдардиреАрдп рдХреЛрдб рд╣реЛрддреЗ рд╣реИрдВ , рдФрд░ рдХрднреА-рдХрднреА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рднреА рдХрд░рддреЗ рд╣реИрдВ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдирд┐рдпрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХреЛрдб рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рдирд┐рдпрдо рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рдХрдЪрд░рд╛ рдкреИрджрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдЪрд░рд╛ рдкреИрджрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрдо рд╣реЛрддрд╛ рд╣реИред

рдкрд╣рд▓рд╛ рдирд┐рдпрдо: рд╕рд╣реА рдирд┐рд╖реНрдкрд╛рджрди рдЖрджреЗрд╢


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

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдХреЛрдб рдЖрдорддреМрд░ рдкрд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ

  • GetComponent <> рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ
  • рдЧрдгрдирд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ
  • рд╕рдорд╛рди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг, рдЖрдорддреМрд░ рдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВ
  • GameObjects рдХреЗ рд▓рд┐рдП рдЦреЛрдЬреЗрдВ
  • рдЯреНрд░рд╛рдВрд╕рдлрд╝рд░ рдФрд░ рдЕрдиреНрдп рдПрдХреНрд╕реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛

рдпрд╣рд╛рдВ рдирдореВрдирд╛ рдХреЛрдб рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐рдпреЛрдВ рддрдХ рд▓реЗ рдЬрд╛рдпрд╛ рд╣реИ:

 //There must be a good reason to keep GetComponent in Update gameObject.GetComponent<LineRenderer>(); gameObject.GetComponent<CircleCollider2D>(); //Examples of calculations returning same result every frame Mathf.FloorToInt(Screen.width / 2); var width = 2f * mainCamera.orthographicSize * mainCamera.aspect; var castRadius = circleCollider.radius * transform.lossyScale.x; var halfSize = GetComponent<SpriteRenderer>().bounds.size.x / 2f; //Finding objects var levelObstacles = FindObjectsOfType<Obstacle>(); var levelCollectibles = FindGameObjectsWithTag("COLLECTIBLE"); //References objectTransform = gameObject.transform; mainCamera = Camera.main; 

рджреВрд╕рд░рд╛ рдирд┐рдпрдо: рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рд╣реА рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ


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

 //Bad code Text text; GameState gameState; void Start() { gameState = StoreProvider.Get<GameState>(); text = GetComponent<Text>(); } void Update() { text.text = gameState.CollectedCollectibles.ToString(); } 

рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдкрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХреБрдЫ рдЖрдЗрдЯрдо рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ UI рдкрд╛рда рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдирдВрдмрд░ рдмрджрд▓рдиреЗ рдкрд░ рд╣реА рдЯреЗрдХреНрд╕реНрдЯ рдмрджрд▓рддреЗ рд╣реИрдВред

 //Better code Text text; GameState gameState; int collectiblesCount; void Start() { gameState = StoreProvider.Get<GameState>(); text = GetComponent<Text>(); collectiblesCount = gameState.CollectedCollectibles; } void Update() { if(collectiblesCount != gameState.CollectedCollectibles) { //This code is ran only about 5 times each level collectiblesCount = gameState.CollectedCollectibles; text.text = collectiblesCount.ToString(); } } 

рдпрд╣ рдХреЛрдб рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдпреВрдЖрдИ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред

рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореИрдВ C # рдШрдЯрдирд╛рдУрдВ ( https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/events/ ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬрд░реНрд╡рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред

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

рддреАрд╕рд░рд╛ рдирд┐рдпрдо: рдЪрдХреНрд░ рд╣рдореЗрд╢рд╛ рд╕рдВрджреЗрд╣ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ


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

рдЪреМрдерд╛ рдирд┐рдпрдо: рдлреЙрд░рди рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ


Foreach рд▓реВрдк рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓" рд╣реИред Foreach рд▓реВрдк рдХреЗ рдЕрдВрджрд░, Enumerator рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдФрд░ рдорд╛рди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд▓реВрдк рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рд╣рдордиреЗ рдлреЙрд░рдЪ рд▓реВрдкреНрд╕ рдХреА рдЬрдЧрд╣ рд▓реЗ рд▓реА рд╣реИ:

 //Bad code foreach (GameObject obstacle in obstacles) //Better code var count = obstacles.Count; for (int i = 0; i < count; i++) { obstacles[i]; } 

рд▓реВрдк рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд▓реВрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдХреЛрдб рдХреЛ рджреЛ рдмрд╛рд░ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИ ред

рдкрд╛рдБрдЪрд╡рд╛рдБ рдирд┐рдпрдо: рд╕рд░рдгрд┐рдпрд╛рдБ рд╕реВрдЪрд┐рдпреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИрдВ


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

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

рдЫрдард╛ рдирд┐рдпрдо: рдлреНрд▓реЛрдЯ рд╕рдВрдЪрд╛рд▓рди рд╡реЗрдХреНрдЯрд░ рдСрдкрд░реЗрд╢рди рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИрдВ


рдпрд╣ рдЕрдВрддрд░ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдпрджрд┐ рдЖрдк рдРрд╕реЗ рд╣рдЬрд╛рд░реЛрдВ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реБрдЖ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдереАред

рд╣рдордиреЗ рд╕рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП:

 Vector3 pos1 = new Vector3(1,2,3); Vector3 pos2 = new Vector3(4,5,6); //Bad code var pos3 = pos1 + pos2; //Better code var pos3 = new Vector3(pos1.x + pos2.x, pos1.y + pos2.y, ......); Vector3 pos1 = new Vector3(1,2,3); //Bad code var pos2 = pos1 * 2f; //Better code var pos2 = new Vector3(pos1.x * 2f, pos1.y * 2f, ......); 

рд╕рд╛рддрд╡рд╛рдВ рдирд┐рдпрдо: рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджреЗрдЦреЗрдВ


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

 //Bad Code GameObject player; void Start() { player = GameObject.Find("PLAYER"); } //Better Code //Assign the reference to the player object in editor [SerializeField] GameObject player; void Start() { } 

рдпрджрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рддреЛ рдХрдо рд╕реЗ рдХрдо рдЯреИрдЧреНрд╕ (рдЯреИрдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ GameObject.FindWithTag рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рд▓реЗрдмрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ ред

рддреЛ, рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ: рд╕реАрдзрд╛ рд▓рд┐рдВрдХ> GameObject.FindWithTag ()> GameObject.Find)

рдЖрдард╡рд╛рдВ рдирд┐рдпрдо: рдХреЗрд╡рд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ RayCast-s (CircleCast, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯрдХрд░рд╛рд╡реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ред рдЯрдХреНрдХрд░реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдФрд░ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕реЗ рдХреЛрдб рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рд╣рдордиреЗ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЙрдЪрд┐рдд рдкрд░рддреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЯрдХрд░рд╛рд╡реЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХреЗрдВред

рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ

 //Bad Code void DetectCollision() { var count = Physics2D.CircleCastNonAlloc( position, radius, direction, results, distance); for (int i = 0; i < count; i++) { var obj = results[i].collider.transform.gameObject; if(obj.CompareTag("FOO")) { ProcessCollision(results[i]); } } } //Better Code //We added all objects with tag FOO into the same layer void DetectCollision() { //8 is number of the desired layer var mask = 1 << 8; var count = Physics2D.CircleCastNonAlloc( position, radius, direction, results, distance, mask); for (int i = 0; i < count; i++) { ProcessCollision(results[i]); } } 

рдиреМрд╡рд╛рдВ рдирд┐рдпрдо: рд▓реЗрдмрд▓ рдХрд╛ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


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

 //Bad Code gameObject.Tag == "MyTag"; //Better Code gameObject.CompareTag("MyTag"); 

рджрд╕рд╡рд╛рдВ рдирд┐рдпрдо: рдХреИрдорд░реЗ рд╕реЗ рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ!


Camera.main рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИред рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ Camera.main рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЗ рджреГрд╢реНрдпреЛрдВ рдХреЗ рдкреАрдЫреЗ, рдПрдХрддрд╛ рдЗрдВрдЬрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ FindGameObjectsWithTag () рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рд┐рдВрдХ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрд╛ рдЬрд╛рдЧред

 //Bad code void Update() { Camera.main.orthographicSize //Some operation with camera } //Better Code private Camera cam; void Start() { cam = Camera.main; } void Update() { cam.orthographicSize //Some operation with camera } 

рдЧреНрдпрд╛рд░рд╣рд╡рд╛рдБ рдирд┐рдпрдо: рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдмреЗрд╣рддрд░ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ


рдЬрд╣рд╛рдВ рднреА рд╕рдВрднрд╡ рд╣реЛ, рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЧреЗрдЯрдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдФрд░ рдмрд╕рдиреЗ рдХреА рдЬрдЧрд╣ ред рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд┐рд╢рди ред рдкреНрд░рддреНрдпреЗрдХ Transform.Position рдХреЙрд▓ рдХреЗ рднреАрддрд░, рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреЗрдЯреНрдЯрд░ рдХреЙрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдпрд╛ рд╕реЗрдЯрд░ рдХреЙрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрдк Transform.Position рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 99% рдорд╛рдорд▓реЛрдВ рдореЗрдВ LocalPositions рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдХреЛрдб рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдмрд╛рд░рд╣рд╡рд╛рдБ рдирд┐рдпрдо: LINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ


рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред рдмрд╕ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдмрд╕ рдЗрддрдирд╛ рд╣реАред

рддреЗрд░рд╣рд╡реЗрдВ рдирд┐рдпрдо: рдирд┐рдпрдореЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА-рдХрднреА рдбрд░реЗрдВ рдирд╣реАрдВ


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

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдХрд╛ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдирд┐рдпрдо рд╣реИрдВ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрдб рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдЪреБрдЕрд▓ рддрд░реАрдХреЗ рдХрднреА рдПрдореНрдмреЗрдб рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ; рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рджреЗрдЦреЗрдВ https: //docs.unity3d.com/Manual/BestP PracticeUnderstandingPerformanceInUnity8.html )ред рддреЛ рдмрд╕ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдЦреЛрд▓реЗрдВ, рдЧреЗрдо рдХреЛ рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдИ рдХрд╛рд░реНрдп рдереЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реВрдк рдХреЗ рд▓рд┐рдПред

рдирд┐рд╖реНрдХрд░реНрд╖


рд▓реЗрдЦ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдЖрдИрдлреЛрди 5 рдПрд╕ рдкрд░ рднреА рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдерд┐рд░ 60 рдПрдлрдкреАрдПрд╕ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ред рд╢рд╛рдпрдж рдХреБрдЫ рдирд┐рдпрдо рдХреЗрд╡рд▓ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рдпрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЪреЗрдХ рдХрд░рддреЗ рд╕рдордп рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдб рдХреЗ рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣рдореЗрд╢рд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред

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


All Articles