рдПрдХрддрд╛ рдореЗрдВ рдХрдорд╛рдВрдб рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛

рдЫрд╡рд┐

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

рд░рдгрдиреАрддрд┐ рдЧреЗрдо рдореЗрдВ рдкреВрд░реНрд╡рд╡рдд рдФрд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рднреА рдЙрдкрдпреЛрдЧреА рд╣реИред

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

  • рдХрдорд╛рдВрдб рдкреИрдЯрд░реНрди рдХреА рдореВрд▓ рдмрд╛рддреЗрдВред
  • рдХрдорд╛рдВрдб рдкреИрдЯрд░реНрди рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
  • рдЗрдирдкреБрдЯ рдХрдорд╛рдВрдб рдХреА рдПрдХ рдХрддрд╛рд░ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджреЗрд░реА рдХрд░реЗрдВред

рдиреЛрдЯ : рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХрддрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ рдФрд░ C # рдХрд╛ рдФрд╕рдд рдЬреНрдЮрд╛рди рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╣рдо рдПрдХрддрд╛ 2019.1 рдФрд░ C # 7 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

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


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рд╛рдордЧреНрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдирд╛ рдФрд░ рдПрдХрддрд╛ рдореЗрдВ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓реЗрдВред

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


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

рджреГрд╢реНрдп рдХрд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ рдЧреЗрдордСрдмрдЬреЗрдХреНрдЯ рдмреЙрдЯ рд╣реИ ред рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЗрд╕реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЪреБрдиреЗрдВред


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


рд╣рдо рдмреЙрдЯ рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ


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

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Move рд╡рд┐рдзрд┐ рдПрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ CardinalDirection рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред CardinalDirection рдПрдХ рдЧрдгрди рд╣реИред CardinalDirection рдХрд╛ рдПрдХ рдЧрдгрди рддрддреНрд╡ Up , Down , Right рдпрд╛ Left ред рдЪрдпрдирд┐рдд CardinalDirection рдЖрдзрд╛рд░ рдкрд░ CardinalDirection рдмреЙрдЯ рд╕рдВрдмрдВрдзрд┐рдд рджрд┐рд╢рд╛ рдореЗрдВ рдЧреНрд░рд┐рдб рдХреЗ рд╕рд╛рде рдареАрдХ рдПрдХ рд╡рд░реНрдЧ рдЪрд▓рддрд╛ рд╣реИред


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


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


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


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

рдХрдорд╛рдВрдб рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреНрдпрд╛ рд╣реИ?


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

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

рд╡рд╛рд╣! рд╡рд╣ рдХреИрд╕реЗ рд╣реИ?

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд╛ рдмрд╣реБрдд рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред

рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


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

рдкрд░рд┐рдгрд╛рдореА "рдХрдорд╛рдВрдб" рдХреЛ рдЕрдиреНрдп рдЯреАрдореЛрдВ рдХреЗ рд╕рд╛рде рддрдм рддрдХ рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрд░реЛрдз рдХрддрд╛рд░ рд╣реИ ред


рдЯреАрдо рдХрддрд╛рд░

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

рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ?

рдХрдорд╛рдВрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХ рдПрдХреНрд╕рдХреНрдпреВрдЯ рд╡рд┐рдзрд┐ рд╣реЛрдЧреА, рдЬреЛ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ (рдЬрд┐рд╕реЗ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдЬрд┐рд╕реЗ рд░рд┐рд╕реАрд╡рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╡рд┐рдзрд┐ рдХрдорд╛рдВрдб рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

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

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

рдмреЙрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ


рдХрдорд╛рдВрдб рдкреИрдЯрд░реНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


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

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рдХрдХреНрд╖рд╛ рдореЗрдВ рдбрд╛рд▓реЗрдВ:

  //1 private readonly string commandName; //2 public BotCommand(ExecuteCallback executeMethod, string name) { Execute = executeMethod; commandName = name; } //3 public delegate void ExecuteCallback(Bot bot); //4 public ExecuteCallback Execute { get; private set; } //5 public override string ToString() { return commandName; } 

рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

  1. commandName рд╡реИрд░рд┐рдПрдмрд▓ commandName рдЙрдкрдпреЛрдЧ рдорд╛рдирд╡-рдкрдардиреАрдп рдХрдорд╛рдВрдб рдирд╛рдо рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
  2. BotCommand рдХреЗ BotCommand рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдХрдорд╛рдВрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА Execute рд╡рд┐рдзрд┐ рдФрд░ рдЙрд╕рдХреЗ name рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред
  3. ExecuteCallback рдкреНрд░рддрд┐рдирд┐рдзрд┐ ExecuteCallback рд╡рд┐рдзрд┐ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрдирдХреИрдкреНрд╕реВрд▓реЗрдЯреЗрдб рд╡рд┐рдзрд┐ рд╢реВрдиреНрдп рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА рдФрд░ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рдЗрдк Bot (рдШрдЯрдХ рдмреЙрдЯ ) рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧреАред
  4. Execute рд╕рдВрдкрддреНрддрд┐, рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧреАред рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред
  5. рд╕реНрдЯреНрд░рд┐рдВрдЧ commandName рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ToString рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреВрдЖрдИ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдПред

рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИ! рд╣рдордиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрдорд╛рдВрдб рдкреИрдЯрд░реНрди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИред

рдЯреАрдо рдмрд┐рд▓реНрдбрд┐рдВрдЧ


RW / рд▓рд┐рдкрд┐рдпреЛрдВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ BotInputHandler рдЦреЛрд▓реЗрдВред

рдпрд╣рд╛рдБ рд╣рдо BotCommand рдкрд╛рдБрдЪ рдЙрджрд╛рд╣рд░рдг BotCommand ред рдпреЗ рдЙрджрд╛рд╣рд░рдг рдЧреЗрдордСрдмрдЬреЗрдХреНрдЯ рдмреЙрдЯ рдХреЛ рдКрдкрд░, рдиреАрдЪреЗ, рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдФрд░ рд╕рд╛рде рд╣реА рд╢реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВрдЧреЗред

рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбрд╛рд▓реЗрдВ:

  //1 private static readonly BotCommand MoveUp = new BotCommand(delegate (Bot bot) { bot.Move(CardinalDirection.Up); }, "moveUp"); //2 private static readonly BotCommand MoveDown = new BotCommand(delegate (Bot bot) { bot.Move(CardinalDirection.Down); }, "moveDown"); //3 private static readonly BotCommand MoveLeft = new BotCommand(delegate (Bot bot) { bot.Move(CardinalDirection.Left); }, "moveLeft"); //4 private static readonly BotCommand MoveRight = new BotCommand(delegate (Bot bot) { bot.Move(CardinalDirection.Right); }, "moveRight"); //5 private static readonly BotCommand Shoot = new BotCommand(delegate (Bot bot) { bot.Shoot(); }, "shoot"); 

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

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

рдкрд╣рд▓реЗ рдЪрд╛рд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЕрдирд╛рдо рд╡рд┐рдзрд┐рдпрд╛рдВ bot рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ Move рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдирдХреЗ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрд▓рдЧ рд╣реИрдВред

MoveUp , MoveDown , MoveLeft рдФрд░ MoveRight , MoveLeft CardinalDirection.Right . MoveRight , CardinalDirection.Down , CardinalDirection.Left рдФрд░ CardinalDirection.Right рдкрд╛рд╕ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдХрдорд╛рдВрдб рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рд╕реЗрдХреНрд╢рди рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реЗ рдЧреЗрдордСрдмрдЬреЗрдХреНрдЯ рдмреЙрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд┐рд╢рд╛рдУрдВ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред

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

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

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЗрдВрд╕реНрдЯреИрдВрд╕ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, BotInputHandler рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб BotInputHandler :

  public static BotCommand HandleInput() { if (Input.GetKeyDown(KeyCode.W)) { return MoveUp; } else if (Input.GetKeyDown(KeyCode.S)) { return MoveDown; } else if (Input.GetKeyDown(KeyCode.D)) { return MoveRight; } else if (Input.GetKeyDown(KeyCode.A)) { return MoveLeft; } else if (Input.GetKeyDown(KeyCode.F)) { return Shoot; } return null; } 

HandleInput рд╡рд┐рдзрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬреЗрдВред

рдЖрдЬреНрдЮрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛


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

UIManager рд╡рд░реНрдЧ рдЯрд░реНрдорд┐рдирд▓ UI рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╕рд╣рд╛рдпрдХ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдо рдЗрд╕ рджреГрд╢реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ UIManager рд╕реЗ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╕рдордЭрд╛рдПрдЧрд╛ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, bot рдЪрд░ рдЧреЗрдордСрдмрдЬреЗрдХреНрдЯ рдмреЙрдЯ рд╕реЗ рдЬреБрдбрд╝реЗ рдмреЙрдЯ рдШрдЯрдХ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрдм рдирд┐рдореНрди рдХреЛрдб рдХреЛ SceneManager рд╡рд░реНрдЧ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕реЗ рдЯрд┐рдкреНрдкрдгреА //1 рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

  //1 private List<BotCommand> botCommands = new List<BotCommand>(); private Coroutine executeRoutine; //2 private void Update() { if (Input.GetKeyDown(KeyCode.Return)) { ExecuteCommands(); } else { CheckForBotCommands(); } } //3 private void CheckForBotCommands() { var botCommand = BotInputHandler.HandleInput(); if (botCommand != null && executeRoutine == null) { AddToCommands(botCommand); } } //4 private void AddToCommands(BotCommand botCommand) { botCommands.Add(botCommand); //5 uiManager.InsertNewText(botCommand.ToString()); } //6 private void ExecuteCommands() { if (executeRoutine != null) { return; } executeRoutine = StartCoroutine(ExecuteCommandsRoutine()); } private IEnumerator ExecuteCommandsRoutine() { Debug.Log("Executing..."); //7 uiManager.ResetScrollToTop(); //8 for (int i = 0, count = botCommands.Count; i < count; i++) { var command = botCommands[i]; command.Execute(bot); //9 uiManager.RemoveFirstTextLine(); yield return new WaitForSeconds(CommandPauseTime); } //10 botCommands.Clear(); bot.ResetToLastCheckpoint(); executeRoutine = null; } 

рд╡рд╛рд╣, рдХрд┐рддрдирд╛ рдХреЛрдб! рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ; рд╣рдо рдЕрдВрддрддрдГ рдЧреЗрдо рд╡рд┐рдВрдбреЛ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдкрд╣рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓реЙрдиреНрдЪ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рдореИрдВ рдмрд╛рдж рдореЗрдВ рдХреЛрдб рд╕рдордЭрд╛рдКрдВрдЧрд╛ред рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред

рдХрдорд╛рдВрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдЪрд▓рд╛рдирд╛


рддреЛ рдЕрдм рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдордп рд╣реИ; рдПрдХрддрд╛ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдкреНрд▓реЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдЖрдкрдХреЛ WASD рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд╛рд▓ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╢реВрдЯрд┐рдВрдЧ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдл рдХреБрдВрдЬреА рджрдмрд╛рдПрдВред рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Enter рджрдмрд╛рдПрдВ ред

рдиреЛрдЯ : рдЬрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддрдм рддрдХ рдирдП рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред



рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓рд╛рдЗрдиреЗрдВ рдЯрд░реНрдорд┐рдирд▓ UI рдореЗрдВ рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИрдВред UI рдореЗрдВ рдЯреАрдореЛрдВ рдХреЛ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ commandName рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ UI рдХреИрд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд▓рд╛рдЗрдиреЗрдВ рдХреИрд╕реЗ рд╣рдЯрд╛рдИ рдЬрд╛рддреА рд╣реИрдВред

рд╣рдо рдЯреАрдореЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ


рдпрд╣ рдЙрд╕ рдХреЛрдб рдХреЛ рд╕реАрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ "рд▓рд╛рдЧреВ рдХрдорд╛рдВрдб" рдЦрдВрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ:

  1. botCommands рд╕реВрдЪреА botCommands рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╕реНрдЯреЛрд░ BotCommand ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╕реНрдореГрддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ рдкрд╛рдБрдЪ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рдХрдИ рд╕рдВрджрд░реНрдн рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, executeCoroutine рдЪрд░ ExecuteCommandsRoutine рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
  2. рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдХреБрдВрдЬреА рджрд░реНрдЬ рдХреА рд╣реИ, рддреЛ Update рдЬрд╛рдВрдЪ рдХрд░реЗрдВ; рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдпрд╣ ExecuteCommands рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ CheckForBotCommands рдХреЛ CheckForBotCommands ред
  3. CheckForBotCommands рдпреВрдЬрд░ рдиреЗ рдЗрдирдкреБрдЯ рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ BotInputHandler рд▓рд┐рдП BotInputHandler рд╕реЗ рд╕реНрдЯреИрдЯрд┐рдХ HandleInput рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИ ред рджреА рдЧрдИ рдХрдорд╛рдВрдб рдХреЛ AddToCommands рдкрд╛рд╕ рдХрд┐рдпрд╛ AddToCommands ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдпрджрд┐ executeRoutine рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ AddToCommands рдХреБрдЫ рднреА рдкрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  4. AddToCommands рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рджрд┐рдП рдЧрдП рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рдПрдХ рдирдпрд╛ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
  5. InsertNewText рд╡рд░реНрдЧ рдХреА InsertNewText рд╡рд┐рдзрд┐ рдЯрд░реНрдорд┐рдирд▓ UI рдкрд░ рдкрд╛рда рдХреА рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рддреА рд╣реИред рдПрдХ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо commandName рдХрдорд╛рдВрдбрдирд╛рдо рджреЗрддреЗ рд╣реИрдВред
  6. ExecuteCommands рд╡рд┐рдзрд┐ ExecuteCommands рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИред
  7. ResetScrollToTop рд╕реЗ UIManager рдЯрд░реНрдорд┐рдирд▓ UI рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  8. ExecuteCommandsRoutine рдореЗрдВ рдПрдХ рд▓реВрдк рд╣реЛрддрд╛ рд╣реИ рдЬреЛ botCommands рд▓рд┐рд╕реНрдЯ рдХреЗ рдЕрдВрджрд░ рдХрдорд╛рдВрдбреНрд╕ рдкрд░ botCommands рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, bot рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ Execute рдкреНрд░реЙрдкрд░реНрдЯреА рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рддрд░реАрдХреЗ рд╕реЗ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, CommandPauseTime рдореЗрдВ рдПрдХ рдкреЙрдЬрд╝ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
  9. RemoveFirstTextLine рд╕реЗ RemoveFirstTextLine рд╡рд┐рдзрд┐ рдЯрд░реНрдорд┐рдирд▓ UI рдореЗрдВ рдореМрдЬреВрдж рдЯреЗрдХреНрд╕реНрдЯ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИ, рдпрджрд┐ рд╡рд╣ рдореМрдЬреВрдж рд╣реИред рдпрд╛рдиреА рдЬрдм рдХреЛрдИ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рдирд╛рдо UI рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  10. рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЗ botCommands рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж botCommands рдХреЛ рд╕рд╛рдлрд╝ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ ResetToLastCheckpoint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЙрдЯ рдХреЛ рдЕрдВрддрд┐рдо рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░ ResetToLastCheckpoint ред рдЕрдВрдд рдореЗрдВ, executeRoutine null рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реИред

рдкреВрд░реНрд╡рд╡рдд рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛


рдлрд┐рд░ рд╕реЗ рджреГрд╢реНрдп рдХреЛ рдЪрд▓рд╛рдПрдВ рдФрд░ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЬрдм рд╣рдо рджрд░реНрдЬ рдХрдорд╛рдВрдб рдХреЛ рд░рджреНрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдХреЛрдИ рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЗрд╕реЗ Undo рдФрд░ Redo рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

SceneManager.cs рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ botCommands рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рдШреЛрд╖рдгрд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░ рдШреЛрд╖рдгрд╛ рдХреЛ botCommands :

  private Stack<BotCommand> undoStack = new Stack<BotCommand>(); 

undoStack рдЪрд░ рдПрдХ рд╕рдВрдЧреНрд░рд╣ (рд╕рдВрдЧреНрд░рд╣ рдкрд░рд┐рд╡рд╛рд░ рд╕реЗ) рд╣реИ рдЬреЛ рд╕рднреА рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкреВрд░реНрд╡рд╡рддреН рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм рд╣рдо рджреЛ рддрд░реАрдХреЗ UndoCommandEntry рдФрд░ RedoCommandEntry рдЬреЛ рдкреВрд░реНрд╡рд╡рдд рдФрд░ рдлрд┐рд░ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдВрдЧреЗред SceneManager рд╡рд░реНрдЧ рдореЗрдВ, ExecuteCommandsRoutine рдХреЗ рдмрд╛рдж рдирд┐рдореНрди рдХреЛрдб SceneManager :

  private void UndoCommandEntry() { //1 if (executeRoutine != null || botCommands.Count == 0) { return; } undoStack.Push(botCommands[botCommands.Count - 1]); botCommands.RemoveAt(botCommands.Count - 1); //2 uiManager.RemoveLastTextLine(); } private void RedoCommandEntry() { //3 if (undoStack.Count == 0) { return; } var botCommand = undoStack.Pop(); AddToCommands(botCommand); } 

рдЖрдЗрдП рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:

  1. рдпрджрд┐ рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдпрд╛ botCommands рд╕реВрдЪреА рдЦрд╛рд▓реА рд╣реИ, рддреЛ UndoCommandEntry рд╡рд┐рдзрд┐ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЕрдиреНрдпрдерд╛, рдпрд╣ undoStack рд╕реНрдЯреИрдХ рдкрд░ рджрд░реНрдЬ рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдХрд╛ рд▓рд┐рдВрдХ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ botCommands рд╕реВрдЪреА рд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рднреА рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
  2. RemoveLastTextLine рд╕реЗ RemoveLastTextLine рд╡рд┐рдзрд┐ рдЯрд░реНрдорд┐рдирд▓ UI рд╕реЗ рдкрд╛рда рдХреА рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрддреА рд╣реИ рддрд╛рдХрд┐ UI botCommands рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдореЗрд▓ botCommands ред
  3. рдпрджрд┐ undoStack рд╕реНрдЯреИрдХ рдЦрд╛рд▓реА рд╣реИ, рддреЛ RedoCommandEntry рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рдпрд╣ undoStack рдХреЗ рд╢реАрд░реНрд╖ рд╕реЗ рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдХреЛ undoStack рдФрд░ botCommands рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╡рд╛рдкрд╕ botCommands рд╕реВрдЪреА рдореЗрдВ AddToCommands ред

рдЕрдм рд╣рдо рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдЬреЛрдбрд╝реЗрдВрдЧреЗред SceneManager рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ SceneManager Update рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдХреЛ рдирд┐рдореНрди рдХреЛрдб рд╕реЗ рдмрджрд▓реЗрдВ:

  if (Input.GetKeyDown(KeyCode.Return)) { ExecuteCommands(); } else if (Input.GetKeyDown(KeyCode.U)) //1 { UndoCommandEntry(); } else if (Input.GetKeyDown(KeyCode.R)) //2 { RedoCommandEntry(); } else { CheckForBotCommands(); } 

  1. рдЬрдм рдЖрдк U рдХреБрдВрдЬреА рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ UndoCommandEntry рд╡рд┐рдзрд┐ UndoCommandEntry ред
  2. рдЬрдм рдЖрдк R рдХреБрдВрдЬреА рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ RedoCommandEntry рд╡рд┐рдзрд┐ RedoCommandEntry ред

рдПрдЬ рдХреЗрд╕ рд╣реИрдВрдбрд▓рд┐рдВрдЧ


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

  1. рдПрдХ рдирдпрд╛ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рддреЗ рд╕рдордп, undoStack рд╕реНрдЯреИрдХ рдХреЛ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  2. рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, undoStack рд╕реНрдЯреИрдХ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ SceneManager рдХреЛ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ SceneManager ред CheckForBotCommands рдмрд╛рдж рдирд┐рдореНрди рд╡рд┐рдзрд┐ рдбрд╛рд▓реЗрдВ:

  private void AddNewCommand(BotCommand botCommand) { undoStack.Clear(); AddToCommands(botCommand); } 

рдпрд╣ рд╡рд┐рдзрд┐ undoStack рд╕рд╛рдлрд╝ undoStack рдФрд░ рдлрд┐рд░ AddToCommands рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред

рдЕрдм рдХреЙрд▓ рдХреЛ AddToCommands рдЕрдВрджрд░ CheckForBotCommands рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реЗ AddToCommands :

  AddNewCommand(botCommand); 

undoStack рдЖрджреЗрд╢ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ExecuteCommands рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ if рдмрд╛рдж рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ:

  undoStack.Clear(); 

рдФрд░ рд╣рдо рдЕрдВрдд рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ!

рдЕрдкрдирд╛ рдХрд╛рдо рдмрдЪрд╛рдУред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ Play Editor рдореЗрдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░реЗрдВред рдЖрджреЗрд╢реЛрдВ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП U рджрдмрд╛рдПрдВред рд░рджреНрдж рдХрд┐рдП рдЧрдП рдЖрджреЗрд╢реЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП R рджрдмрд╛рдПрдВред


рд╣рд░реЗ рд░рдВрдЧ рдХреА рдЪреМрдХреА рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

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


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

рдЙрдиреНрдирдд C # рддрдХрдиреАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, C # рд╕рдВрдЧреНрд░рд╣, Lambdas рдФрд░ LINQ рдкрд╛рдареНрдпрдХреНрд░рдо рд▓реЗрдВред

рдХрд╛рд░реНрдп


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

рдирд┐рд░реНрдгрдп
  • MoveUp ├Ч 2
  • MoveRight ├Ч 3
  • MoveUp ├Ч 2
  • moveLeft
  • рд╢реВрдЯрд┐рдВрдЧ
  • MoveLeft ├Ч 2
  • MoveUp ├Ч 2
  • MoveLeft ├Ч 2
  • MoveDown ├Ч 5
  • moveLeft
  • рд╢реВрдЯрд┐рдВрдЧ
  • moveLeft
  • MoveUp ├Ч 3
  • рд╢реВрдЯ ├Ч реи
  • MoveUp ├Ч 5
  • MoveRight ├Ч 3

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


All Articles