Godot: GDScript рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдЬреЛрдбрд╝реЗрдВред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдЕрдХреНрддреВре░ 2018  ┬╖  93рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: godotengine/godot

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

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

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

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

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

# move_right_trait.gd
extends Node2D
class_name MoveRightTrait # not necessary, but just for clarity
func move_right():
    position.x += 1

# my_sprite.gd
extends Sprite
is MoveRightTrait # maybe add a 'use' or 'trait' keyword for this instead?
is "res://move_right_trait.gd" # alternative if class_name isn't used
func _physics_process():
    move_right() # MoveRightTrait's content has been merged into this script
    if MoveRightTrait in self:
        print("I have a MoveRightTrait")

рдореИрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ:

  1. "^ рд╡рд┐рд╢реЗрд╖рддрд╛ \" рдХреЗ рд▓рд┐рдП RegEx рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░реА-рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдкреБрдирдГ рд▓реЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛)ред рд╣рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рд╣рд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рдж рдЙрддреНрдкрдиреНрди рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреА рддрд╛рдХрд┐ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдХреНрдпрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдореНрдорд┐рд▓рди рдХрд┐рдП рдЧрдП рд╣реИрдВред
  2. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдкрд╛рд░реНрд╕рд░ рдХреЛ рдХреАрд╡рд░реНрдб рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рд╕рд┐рдЦрд╛рдПрдВ, рд╕рдВрджрд░реНрднрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ, рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреНрд▓рд╛рд╕рдиреЛрдб рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рд╕рдиреЛрдб рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ (рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рд▓реЗрдирд╛ рдФрд░ рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП)ред рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ред

рджреВрд╕рд░реА рдУрд░, рд▓реЛрдЧ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ GDScript рдХрд╛ рдирд╛рдо рд╣реЛ, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ GDScript рдХрд╛ class_name CreateDialog рдореЗрдВ рджрд┐рдЦрд╛рдИ рди рджреЗ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд┐рд╕реА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдХреЗрд╡рд▓ рд╡реЗ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИрдВ (рд╢рд╛рдпрдж рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ 'рд╡рд┐рд╢реЗрд╖рддрд╛' рд▓рд┐рдЦрдХрд░?) рд╡реИрд╕реЗ рднреА, рд╕реЛрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиред

рд╡рд┐рдЪрд╛рд░?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╡рд┐рдХрд▓реНрдк 2 1 рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд╛рдлреА рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛) рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдЧрдореЗрдВрдЯ рдХрд┐рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдЖрдпрд╛ рд╣реИ (рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП) рдФрд░ 2) рд╣рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рддрдм рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЕрдВрдд рдореЗрдВ рд╕рдм рдХреБрдЫ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╢рд╛рдорд┐рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреНрд░рдо рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдореЗрдВ рдХрдЯреМрддреА рдХрд░реЗрдЧрд╛ред

archived discussion feature proposal gdscript

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@aaronfranke рд▓рдХреНрд╖рдг , рдореВрд▓ рд░реВрдк рд╕реЗ рдорд┐рдХреНрд╕рд┐рди рдХреЗ рд╕рдорд╛рди рд╣реА, рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

PHP, Ruby, D, Rust, Haxe, Scala, рдФрд░ рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рдХреНрд╖рдг/рдорд┐рдХреНрд╕рд┐рди рдореМрдЬреВрдж рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд╡рд┐рдХреА рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╣реИ), рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдкрд░рд┐рдЪрд┐рддрддрд╛ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдкреНрд░рджрд░реНрд╢рди рд╣реИред

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

рд╕рднреА 93 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреНрдпрд╛ рд▓рд╛рдн рд╣реИ: extends "res://move_right_trait.gd"

@MrJustreborn рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рдХрдИ рд▓рдХреНрд╖рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реА # рдХреЙрд▓ " рдЗрдВрдЯрд░рдлреЗрд╕ " рд╣реИ, рд▓реЗрдХрд┐рди рдЧреИрд░-рд╕рд╛рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде? рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдлреАрдЪрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@aaronfranke рд▓рдХреНрд╖рдг , рдореВрд▓ рд░реВрдк рд╕реЗ рдорд┐рдХреНрд╕рд┐рди рдХреЗ рд╕рдорд╛рди рд╣реА, рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

PHP, Ruby, D, Rust, Haxe, Scala, рдФрд░ рдХрдИ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рдХреНрд╖рдг/рдорд┐рдХреНрд╕рд┐рди рдореМрдЬреВрдж рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд╡рд┐рдХреА рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рд╣реИ), рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдкрд░рд┐рдЪрд┐рддрддрд╛ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рдкреНрд░рджрд░реНрд╢рди рд╣реИред

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

рд╢рд╛рдпрдж includes рдЬреИрд╕рд╛ рдХреЛрдИ рдХреАрд╡рд░реНрдб?

extends Node2D
includes TraitClass

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдиреНрдп рдирд╛рдо рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛, рдорд┐рд╢реНрд░рдг, рд╣реИ, рдЖрджрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рднреА рдареАрдХ рд╣реИрдВред

рдореБрдЭреЗ рдРрдб рдореЗрдиреВ рд╕реЗ class_name рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд░рдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рднреА рдкрд╕рдВрдж рд╣реИред рдпрд╣ рдЫреЛрдЯреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдиреЛрдбреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рдпрдВ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдлреАрдЪрд░ рд╡рд┐рд╖рдп рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

(рдЧрд▓рддреА рд╕реЗ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рд╣рдЯрд╛ рджреА рдЧрдИ, рдУрд╣! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдирд┐рд╡рд╛рд░реНрдп "рдЖрдк рдХрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЕрдиреБрдорддрд┐ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрддреЗ, рдПрдХрддрд╛ рдпрд╣ рдХрд░рддреА рд╣реИ" )

рд╡рд┐рдЬреБрдЕрд▓рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЕрдЧрд░ рдмрд┐рд▓реНрдХреБрд▓?

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

@LikeLakers2

рд╡рд┐рдЬреБрдЕрд▓рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЕрдЧрд░ рдмрд┐рд▓реНрдХреБрд▓?

рдпрджрд┐ рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдП рдЧрдП рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ VisualScript рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХреЗрд╡рд▓ рдЬреАрдбреАрд╕реНрдХреНрд░рд┐рдкреНрдЯред VisualScript рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХреА рдЧрдИ рдХреЛрдИ рднреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ VisualScript рдПрдХ рдкрд╛рд░реНрд╕ рдХреА рдЧрдИ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ (рдмрд╕ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред рд╕рд╛рде рд╣реА, рд╢рд╛рдпрдж рд╣рдореЗрдВ рдкрд╣рд▓реЗ VisualScript рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕-рд╕рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЬрд╝реЛрд░ - рдЬрд╝реЛрд░ рд╕реЗ рд╣рдВрд╕рдирд╛

рд╕рд╛рде рд╣реА, рдХреНрдпрд╛ рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдлрд╛рдпрджреЗрдордВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рд▓рдХреНрд╖рдг рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдереЗ?

рдХреЛрдИ рдЦрд╛рд╕ рдмрд╛рдд рдирд╣реАрдВ рд╣реЛрдЧреАред рд▓рдХреНрд╖рдг рдХреЗрд╡рд▓ GDScript рдкрд░ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЧреБрдг, рд╕реНрдерд┐рд░рд╛рдВрдХ, рд╕рдВрдХреЗрдд рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реМрдВрдкрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрди рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХреЗрд╡рд▓ рд▓рдХреНрд╖рдг рд╣реИрдВ рдФрд░ рдХреЛрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реИ (рдХрдо рд╕реЗ рдХрдо, рдХреЛрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)ред

рд▓рдХреНрд╖рдг, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдХрднреА рднреА рдкреНрд░рдпреЛрдЧ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓рд┐рдкрд┐ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдРрд╕рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рдпрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

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

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

рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдпрд╣ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рддреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИ?

рдореИрдВ рд▓рдЧрднрдЧ рдХрднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЧрдИ рдЬрдЯрд┐рд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрдЬрд╛рдп GDscript рдХреЛ рдПрдХ рд╕рд░рд▓ рднрд╛рд╖рд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

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

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

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

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдореЗрдВ рдЬрд┐рд╕ рдЪреАрдЬ рдХреА рд╕рдмрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЬрд░реВрд░рдд рд╣реИ рд╡рд╣ рд╣реИ рддреЗрдЬ рдЗрдВрдЬрди рд░рд┐рд▓реАрдЬ рдЪрдХреНрд░ред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдмрд╕ рдирдИ рдбреАрдПрд▓рдПрд▓ рдпрд╛ рдЗрддрдиреА рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрдВрдЬрди рдСрдЯреЛ рдХреЛ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░реЗрдВ, рдЬреИрд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдИрдбреАрдИ рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╢реИрд▓реАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдЦреНрдд рдЬрд░реВрд░рдд рд╣реИ, рдореБрдЭреЗ рдЗрд╕реЗ рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП 3.1 рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред 3.1 рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрдЧ рдХреЗ рд╕рд╛рде рдЕрднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╣реИред рдирдпрд╛ рд╡рд░реНрдЧ рдХрд┐рд╕реА рдкрде рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ .dll рдпрд╛ .so рд╕реЗ GDScript рдХреЛ рд╕реНрд╡рддрдГ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╕реА ++ рдореЗрдВ рдпрд╣ рдХрд┐рддрдирд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдХрдард┐рди рдирд╣реАрдВ рд╣реИ

@ fian46 рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп GDNative рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ websockets рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛, рддреЛ рд╣рд╛рдБ, рдЖрдкрдиреЗ рдЬреЛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╡рд╣ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рд╡реИрдирд┐рд▓рд╛ рдЗрдВрдЬрди рдореЗрдВ рдПрдХ рдПрдХреАрдХреГрдд рд╕реБрд╡рд┐рдзрд╛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ред рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдмрдирд╛рдиреЗ рд╕реЗ рдХреЛрдИ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреА рдмрд╛рдд рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред

рдУрд╣, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ GDNative рдореМрдЬреВрдж рд╣реИ . рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдирдХрд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рдФрд░ рдЗрд╕реЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдирд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рдореВрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ?

рдпрджрд┐ рдЧреЛрдбреЛрдЯ рд▓рд┐рдкрд┐ рдПрдХ рдЕрдирд╛рдо рд╡рд░реНрдЧ рд╣реИ, рддреЛ рдХреНрдпреЛрдВ рди "move_right_trait.gd" рдХреЛ "my_sprite.gd" рдореЗрдВ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдП?
рдореЗрд░реА рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВред

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

рдХреНрдпрд╛ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрд▓реЛрдб ("рдХреБрдЫ-рдЕрдиреНрдп-рд╡реНрдпрд╡рд╣рд╛рд░ред рдЬреАрдбреА") рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдереЗ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдереЗ?

@fian46 @DriNeo рдЦреИрд░, рд╣рд╛рдВ рдФрд░ рдирд╣реАрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддреА рд╣реИред

@TheYokai

рд╕рдорд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП

рд╕рдорд╕реНрдпрд╛ рдПрдХ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ рдЬреЛ рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдмрддрдЦ-рдЯрд╛рдЗрдкрд┐рдВрдЧ рдареАрдХ рд╣рд▓ рдХрд░рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдореВрд╣реЛрдВ рдХреЛ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд (рд╕рдВрдпреЛрдЬрди/рд╕реНрд╡реИрдкрд┐рдВрдЧ) рдХрд░рддреА рд╣реИред


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

extends Reference
class_name Game
static func print_text(p_text):
    print(p_text)
# can even add inner classes for sub-namespaces

extends Node
func _ready():
    Game.print_text("Hello World!")

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

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

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореИрдВ рдЗрд╕рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╕рднреА рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реИрдВред

  1. рдпрджрд┐ рдЖрдк рд╕рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рд╕реНрд╡реИрдк рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ ...

    1. "рд╡реНрдпрд╡рд╣рд╛рд░" рдмрджрд▓рдиреЗ рдореЗрдВ рдПрдХ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╕рдореВрд╣рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

    2. рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрд╡рд╣рд╛рд░ (X * Y) рдХреЗ рд╕рднреА рдХрд╛рд░реНрдп рдЖрдкрдХреА рдПрдХрд▓ рд▓рд┐рдкрд┐ рдореЗрдВ рдмреИрдареЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрджреА рдлреВрд▓рд╛ рд╣реБрдЖ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

  2. рдЖрдк рдХреЗрд╡рд▓ рдкреВрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╣рд░ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрди рд╡реНрдпрд╡рд╣рд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреА рд╣реЛрдЧреАред
  3. рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд╛рдЗрд▓реНрдб рдиреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпреЗ рдЕрдЬреАрдм "рдШрдЯрдХ" Node2D рдиреЛрдбреНрд╕ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЙрдирдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП move_and_slide рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдХрд┐ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ, рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдмреЛрд▓рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

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

    • рдЖрдкрдХреЛ рдиреЛрдбреНрд╕ рдХреЗ рдЗрдЪреНрдЫрд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдХреЛрдб рдкреВрд░реНрдгрддрд╛ рднреА рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ Node2D рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдкреВрд░реНрдг рдмрд┐рдВрджреБ рдПрдХ KinematicBody2D рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

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

рдЧреЛрдбреЛрдЯ рдХреЗ рдиреЛрдб-рд╕реАрди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рдРрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрд▓рдЧреНрди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдиреЛрдбреНрд╕ рдпрд╛ рджреГрд╢реНрдп рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЙрди рдиреЛрдбреНрд╕/рджреГрд╢реНрдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рджреГрд╢реНрдп рдореЗрдВ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирд╕реЗ рдбреЗрдЯрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рддрдм рдореВрд▓ рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рдПрд░рд┐рдпрд╛ 2 рдбреА рдФрд░ CollisionShape2D рд╕рдВрдмрдВрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ)ред

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

рдПрд╣, рдЦреБрдж рдХреЛ 'рдЗрдВрдЯрд░рдлрд╝реЗрд╕/рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ' рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рднреА * is * рдкрд░реАрдХреНрд╖рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

@ OvermindDL1 рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп in рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд┐рд░рд╛рд╕рдд рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛-рдЙрдкрдпреЛрдЧ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдереЛрдбрд╝реЗ рдпрд╣рд╛рдБ рдПрдХ XY рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛, рдореЗрд░рд╛ рдмреБрд░рд╛ред рдореИрдВ рдЕрднреА-рдЕрднреА 2 рдЕрдиреНрдп рдореБрджреНрджреЛрдВ (#23052, #15996) рд╕реЗ рдЖрдпрд╛ рдерд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рд╕реНрддреБрдд рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рджрд┐рдПред

@ рдпрд╣ рд╕рдорд╛рдзрд╛рди # 19486 рдХреЗ рдЦрд┐рд▓рд╛рдл рдЙрдард╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ред

@willnationsdev рдорд╣рд╛рди рд╡рд┐рдЪрд╛рд░, рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реВрдВ!

рдореЗрд░реА рд╕реАрдорд┐рдд рд╕рдордЭ рд╕реЗ, рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдЗрд╕ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИ: https://www.youtube.com/watch?v=raQ3iHhE_Kk
(рдзреНрдпрд╛рди рд░рдЦреЗрдВ, рдореИрдВ рджрд┐рдЦрд╛рдП рдЧрдП _workflow_ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рди рдХрд┐ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ)

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

рдХрдо рд╕реЗ рдХрдо рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ GDScript рдореЗрдВ рдЕрднреА рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@AfterRebelion рдЙрд╕ рд╡реАрдбрд┐рдпреЛ рдХреЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдорд┐рдирдЯ рдЬрд╣рд╛рдВ рд╡рд╣ рдХреЛрдбрдмреЗрд╕ (рдФрд░ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╡рд░рдг) рдХреА рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛, рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдпрддрд╛ рдФрд░ рдбрд┐рдмрдЧреЗрдмрд┐рд▓рд┐рдЯреА рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИред

рдХрдо рд╕реЗ рдХрдо рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ GDScript рдореЗрдВ рдЕрднреА рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

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

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

рдпрд╣ рдПрдХрддрд╛ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ GameObject рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд░рд╛рд╕рдд рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХреЗрдВред рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЗрдВ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдереЛрдбрд╝рд╛ (?) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдиреЛрдб/рдШрдЯрдХ-рдЖрдзрд╛рд░рд┐рдд рдЖрдВрддрд░рд┐рдХ рдкрджрд╛рдиреБрдХреНрд░рдо рд╣реИрдВред

рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд┐рд▓реНрд╕ рдПрдбрд╡реЛрдХреЗрдЯ рдЦреЗрд▓рддреЗ рд╣реИрдВ ( @MysteryGM , рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдлрд╛рдпрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЗрдВ рдХреИрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдПрдХ рдирдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рджреЗ рд░рд╣рд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдЬреЛ рд╕реЛрдЪ рд░рд╣реЗ рдереЗ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ / рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдереЗ:

рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкрд░рд┐рдЪрдп рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреАрдбреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдПрдХ рдкрд░рдд рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреАрдбреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдбрд┐рдмрдЧреЗрдмрд┐рд▓рд┐рдЯреА рдХреЛ рдЯреИрдВрдХ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рдФрд╕рддрди 2 рдпрд╛ 3 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЪреБрдирдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд╛рд░рдг рдвреВрдВрдврдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рддреЛ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рд╕реНрдерд┐рдд рд╣реИрдВ - рдФрд░ рдпрджрд┐ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдЪреАрдЬ рдбреЗрдЯрд╛/рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ - рддреЛ рд╡реЗ 2 рдпрд╛ 3 рдХрджрдореЛрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдмрдбрд╝реЗ, рдЕрддреНрдпрдзрд┐рдХ рддрдирд╛рд╡рдкреВрд░реНрдг рдЪрд░рдгреЛрдВ рдореЗрдВ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

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


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

рдЕрдЪреНрдЫрд╛, рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреЛрдИ рдЧреИрд░-рдИрд╕реАрдПрд╕ рдЗрдВрдЬрди рдХреНрдпрд╛ рдХрд░реЗрдЧрд╛? рд╕рдВрд░рдЪрдирд╛ рдЕрднреА рднреА рдЙрддреНрддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рдиреЛрдб рдЕрдиреБрдЪрд┐рдд рд╣реИ рдЬрдм рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЛ рд╕реНрдХреЗрд▓/рдЬрдЯрд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдХреЛрдИ рдХреЗрд╡рд▓ рдЧреИрд░-рдиреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдареЛрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреВрд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рдЕрднреА рднреА рд░реВрдЯ рдиреЛрдб рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рд╣реИрдВред рдпрд╣ Reference рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

# root.gd
extends KinematicBody2D

export(Script) var jump_impl_script = null setget set_jump_impl_script
var jump_impl
func set_jump_impl_script(p_script):
    jump_impl = p_script.new() if p_script else null

export(Script) var move_impl_script = null setget set_move_impl_script
var move_impl
func set_move_impl_script(p_script):
    move_impl = p_script.new() if p_script else null

func _physics_process():
    # use logic involving these...
    move_impl.move(...)
    jump_impl.jump(...)

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

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

рд╡реИрд╕реЗ рднреА, рд╣рд╛рдБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЪрдХрд╛рдЪреМрдВрдз рд╡рд╛рд▓реЗ рдореБрджреНрджреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреАред XY рд╕рдорд╕реНрдпрд╛ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реБрд░реНрд░реЗ! /рдПрд╕

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

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

# root.gd
extends KinematicBody2D

# if you use a Resource script AND had a way of specifying that the assigned Resource 
# must extend that script, then the editor would automatically assign an instance of 
# that resource script to the var. No separate instancing or setter necessary.

export(Resource) var jump_impl = null # set jump duration, max height, tween easing via Inspector
export(Resource) var move_impl = null # similarly customize movement from Inspector

# can then create different Resources as different implementations. Because they are resources,
# one can edit them even outside of a scene!
func _physics_process():
    move_impl.move(...)
    jump_impl.jump(...)

рд╕рдВрдмрдВрдзрд┐рдд: #22660

@рдЖрдлреНрдЯрд░рд░реЗрдмреЗрд▓рд┐рдпрди

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

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

# root.gd
extends KinematicBody2D

export(Script) var jump_impl_script = null setget set_jump_impl_script
var jump_impl
func set_jump_impl_script(p_script):
jump_impl = p_script.new() if p_script else null
...

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

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

@рдЖрдлреНрдЯрд░рд░реЗрдмреЗрд▓рд┐рдпрди

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

рдареАрдХ рд╣реИ, рдЬрд┐рд╕ Resource -рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдореИрдВрдиреЗ рдЙрд╕реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ #22660 рд╕реЗ рдХреБрдЫ рдмреЗрд╣рддрд░ рд╕рдВрдкрд╛рджрдХ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд╣реИ, рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдПрдХрддрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреБрд▓рдиреАрдп рдмрдирд╛ рджреЗрдЧрд╛ред

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

рдареАрдХ рд╣реИ, рдЕрдЧрд░ рд╡реЗ 3.2 рдореЗрдВ рд╕рд░рдгреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдкрдереЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрдпрд╛рддрд┐рдд рд╕рд░рдгреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдпрд╛ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХреЛ рдХрд╕реНрдЯрдо рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП EditorInspectorPlugin рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 3.1 рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

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

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

@vnen рдЬрд┐рд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдореИрдВ рдЖрдпрд╛ рдерд╛, рд╡рд╣ рдЕрдВрддрд┐рдо рдЖрдЗрдЯрдо рд╕рдВрд╕рд╛рдзрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ рдЖрдЙрдЯрд╕реЛрд░реНрд╕ рдХрд░рдирд╛ рд╣реИред

  • рдЙрдиреНрд╣реЗрдВ рдЕрднреА рднреА рдЙрдЬрд╛рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рдиреЛрдб рдкрд░ рд╕рджрд╕реНрдп рдЪрд░ рдереЗред

  • рд╡реЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рд╢рд╛рди рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдФрд░ рддрд░реНрдХ рдХрд╣рд╛рдВ рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВ, рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдХрдИ рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

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

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

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

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

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

@vnen

рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдк рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддреЗ рдХрд┐ рдЖрдк рдХрд┐рди рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдХреНрдпрд╛ рдЖрдк рдпрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рдХреЛрдИ рдкрд░реНрдпрд╛рдкреНрдд рдХрдореА рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдХреМрди рд╕реА рд╕рдВрдкрддреНрддрд┐рдпрд╛рдВ рд╕реБрд▓рдн рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ # 22660 рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдорд┐рд▓рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред

  1. рдореИрдВ рджреГрд╢реНрдп рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ, рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрд╕ рджреГрд╢реНрдп рдХреЗ рд░реВрдЯ рдиреЛрдб рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЗрдЦреЗрдВред
  2. рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░, рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ ...

    • export(MoveImpl) var move_impl = FourWayMoveImpl.new()

    • use FourWayMoveTrait

  3. рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдХреНрд▓рд┐рдХ-рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдзрди рд╣реИ (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ 3.1.1 рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП!), рд╣рдо рддрдм рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╛рди рдЪрд░рдгреЛрдВ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреМрди рд╕реЗ рдЧреБрдг рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдФрд░ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐, рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреБрдг рд╣реИрдВ, рддреЛ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рд╣реИ рддреЛ рдпрд╣ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг, рдпрд╛рдиреА move_impl.<property> ред

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

рдпрд╣ рд╕рдЪ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рд╣реЛрдиреЗ рдХрд╛ рд▓рд╛рдн рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд░рд┐рдпрд╛ рдХреА рд▓рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ:

("рд╣рд╛рдИ-рд▓реЗрд╡рд▓ рдЯреАрдордореЗрдЯ", HLT, рдЬреИрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрдирд░, рд▓реЗрдЦрдХ, рдХрд▓рд╛рдХрд╛рд░, рдЖрджрд┐)

  • рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЦреЛрд▓рдиреЗ, рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд▓рд╛рдЗрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдмрджрд▓рдиреЗ (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ ...) рдХреЗ рдмрдЬрд╛рдп, рдХреЛрдИ рд╕реАрдзреЗ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рд╕реЗ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

  • рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ *.tres рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдЪрдПрд▓рдЯреА рддрдм рдЙрдиреНрд╣реЗрдВ рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдо рдбреЙрдХ рд╕реЗ рдбреНрд░реИрдЧ-рдПрдВрдб-рдбреНрд░реЙрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ рдЕрдкрдирд╛ рдЕрдзрд┐рдХрд╛рд░ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрдирд╛рдиреА рд╣реЛрдЧреА рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреНрд░рджрд╛рди рдХрд░реЗред рдлрд┐рд░ рд╡реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХреЛрдбрд┐рдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ "рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди" рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реЗрдВрдЧреЗред

    1. рдХрдордЬреЛрд░ рдЗрд╕рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдШреЛрд╖рдгрд╛рддреНрдордХ рдХреЗ рдмрдЬрд╛рдп рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред
    2. рдХрдордЬреЛрд░ рдХреНрдпреЛрдВрдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
    3. рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдЖрдзрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдареАрдХ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИред рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
    4. рдпрджрд┐ рд╡реЗ $#$ use MoveTrait $#$ рдХреЗ рдмрдЬрд╛рдп use FourWayMoveTrait рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЕрдм рдХреЛрдИ рд╕реНрдерд╛рдпреА рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдзрд╛рд░ MoveTrait рдХреЗ рд╕рд╛рде рднреА рд╕рдВрдЧрдд рд╣реИред рдпрд╣ рдПрдЪрдПрд▓рдЯреА рднреНрд░рдо рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ FourWayMoveTrait рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдПрдХ рдЕрд▓рдЧ MoveTrait рдореЗрдВ рднреА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
    5. рдпрджрд┐ рдХреЛрдИ рдПрдЪрдПрд▓рдЯреА рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдирдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛ рд░рд╣рд╛ рдерд╛, рддреЛ рд╡реЗ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЙрди рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд░реАрдХреНрд╖рдХ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреИрд░-рдореБрджреНрджрд╛ рд╣реИред
  • рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рд╕рдВрд╕рд╛рдзрди рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрджрд┐ рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░рдг рдерд╛)ред рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдЧреА, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкрд╛рд░реНрд╕ рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдЧреАред

  • рдХреЛрдИ рднреА 2D/3D рд╡реНрдпреВрдкреЛрд░реНрдЯ рдХреЛ рдЫреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░/рдпрд╛ рдЙрдирдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдЪрдПрд▓рдЯреА рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реИ (рдореИрдВ рдмрд╣реБрдд рдХреБрдЫ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдЬреЛ рдПрдХрдореБрд╢реНрдд рдирд╛рд░рд╛рдЬ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рджреЗрдЦрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ)ред

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

рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:

рд▓реЗрдХрд┐рди рдпрд╣ рдХрдо рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдк рдПрдХ рдирдЬрд╝рд░ рдореЗрдВ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддреЗ рдХрд┐ рдЖрдк рдХрд┐рди рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

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

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

рдпрд╣реА рд╣реИ, рд▓реЛрдЧ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рди рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ (рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ) рдФрд░ рд╕рд┐рдЧреНрдирд▓ (рдЬреЛ рддрдм UI рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ) рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

рдореИрдВ рдХреЗрд╡рд▓ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдмрд╛рд╣рд░реА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рд╕реАрдзреЗ рдореБрдЦреНрдп рд▓рд┐рдкрд┐ рдореЗрдВ рд╣реА рд▓рд┐рдЦреЗ рдЧрдП рд╣реЛрдВред

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реЛрдЧреА рдпрджрд┐ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд░реНрдЧ рдФрд░ рдкреГрдереНрд╡реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХреНрд╕)

@vnen рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдЕрдм рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рдареАрдХ рд╣реИ, рдЪреВрдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрдВрдХ рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рдЬрд╛рди рдмрд╛рдХреА рд╣реИ, рдореИрдВ рдЕрдЧрд▓реА рдмрд╛рд░ рдореМрдХрд╛ рдорд┐рд▓рдиреЗ рдкрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ред

рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдкрд░ рдХреЛрдИ рдЦрдмрд░? рдЕрдм рдЬрдмрдХрд┐ GodotCon 2019 рдХреА рдШреЛрд╖рдгрд╛ рд╣реЛ рдЪреБрдХреА рд╣реИ, рдФрд░ Godot Sprint рдПрдХ рдЪреАрдЬ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рд╡рд╣рд╛рдВ рдмрд╛рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред

@AfterRebelion рдореИрдВ рдмрд╕ рд╡рд╛рдкрд╕ рдЖрдирд╛ рдФрд░ рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдерд╛ред рдореБрдЭреЗ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдпреЗ рдзрдиреНрдпрд╡рд╛рджред рдПрдХреНрд╕рдбреА

@willnationsdev рдореБрдЭреЗ рд╡рд╣ рдкрд╕рдВрдж рдЖрдпрд╛ рдЬреЛ рдореИрдВрдиреЗ EditorInspectorPlugin рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛! рддреНрд╡рд░рд┐рдд рдкреНрд░рд╢реНрди, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ ... рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ... рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХреЛ рдПрдХ рдмрдЯрди рдЬреЛрдбрд╝реЗрдВред
(рдХрд╛рдлреА рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИ рдЬрдм рд╕реЗ рдореИрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдирд┐рд░реАрдХреНрд╖рдХ рдореЗрдВ рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдореИрдВ рдмрдЯрди рдкреНрд░реЗрд╕ рдХреЛ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)

@xDGameStudios рд╣рд╛рдБ, рд╡рд╣ рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╕рдВрднрд╡ рд╣реИред рдХрд┐рд╕реА рднреА рдХрд╕реНрдЯрдо рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдирд┐рд░реАрдХреНрд╖рдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рддреЛ рд╢реАрд░реНрд╖ рдкрд░, рдиреАрдЪреЗ, рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдКрдкрд░, рдпрд╛ рдХрд┐рд╕реА рд╢реНрд░реЗрдгреА рдХреЗ рдиреАрдЪреЗред

@willnationsdev рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВ рдЖрдкрд╕реЗ рдирд┐рдЬреА рд╕рдВрджреЗрд╢ рдХреЗ рдЬрд░рд┐рдП рд╕рдВрдкрд░реНрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрд╛ рдирд╣реАрдВ !! рд▓реЗрдХрд┐рди рдореИрдВ EditorInspectorPlugin (рдХреБрдЫ рдирдореВрдирд╛ рдХреЛрдб рдХреА рддрд░рд╣) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ .. рдХрд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдХрд╛рд░ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХреБрдЫ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) MyResource рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрдпрд╛рдд "рдирд╛рдо" рдФрд░ рдПрдХ рдирд┐рд░реАрдХреНрд╖рдХ рдмрдЯрди рд╣реИ рдЬреЛ "рдирд╛рдо" рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рдЪрд░ рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рджрдмрд╛рддрд╛ рд╣реВрдВ (рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдпрд╛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди)! рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдХреА рдХрдореА рд╣реИ ... рдЕрдЧрд░ рдореИрдВ рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рддреЛ рдореИрдВ рд╕реНрд╡рдпрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд▓рд┐рдЦреВрдВрдЧрд╛! :рдбреА рдзрдиреНрдпрд╡рд╛рдж

рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдПрдХреНрд╕)

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдорд╛рдорд▓рд╛ Traits.MoveRightTrait.move_right() рдмрди рдЬрд╛рдПрдЧрд╛

рдпрд╛ рдЗрд╕рд╕реЗ рднреА рд╕рд░рд▓, рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдЯреЛрд▓реИрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рд▓реЗ:

Movement.move_right()

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

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

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

рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ extends Node рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдФрд░ рдЙрдЪрд┐рдд extend рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдиреЛрдб рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдЙрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рдЧрддрд┐? рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдореБрдЭреЗ рдХреЛрдб рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдпрд╛ рдиреЛрдбреНрд╕ рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 3.1 рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж 3.2 рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИ?

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

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

"рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди"?

@Zireal07 #15586
рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЗрдВрдЬрди рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирдП "рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд" рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреА рдореЗрд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧреА:

static Array func sum(p_self: Array):
    if not len(p_self):
        return 0
    var value = p_self[0]
    for i in range(1, len(p_self)):
        value += p_self[i]
    return value

рдлрд┐рд░, рдХрд╣реАрдВ рдФрд░, рдореИрдВ рдмрд╕ рдРрд╕рд╛ рдХрд░ рдкрд╛рдКрдВрдЧрд╛:

var arr = [1, 2, 3]
print(arr.sum()) # prints 6

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

рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ @vnen рдФрд░ @jahd2602 рд╕реЗ рдХреБрдЫ рдмрд╛рддрдЪреАрдд рдХреА рд╣реИред рдПрдХ рдмрд╛рдд рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ рдЬрдп рдХрд╛ рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди: рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рд╕реНрдерд╛рди рдЖрдпрд╛рдд рдХрд░рдирд╛ред

рдЗрд╕ рддрд░рд╣, рдЖрдк рдирд┐рдореНрди рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

class A:
    var a_prop: String = "Hello"
    func foo():
        print("A's a_prop: ", a_prop)
    func bar():
        print("A's bar()")

class B:
    using var a: A = A.new()
    var a_prop: String = "World" # Overriding A's a_prop

    func bar():  # Overriding A's bar()
        print("B's bar()")

func main():
    var b: B = B.new()
    b.foo() # output: "A's a_prop: World"
    b.bar() # output: "B's bar()"

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ using рдХреАрд╡рд░реНрдб рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ b.foo() рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ b.a.foo() рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдЪреАрдиреА рд╣реИред

рдФрд░ рдлрд┐рд░, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ b is A == true рдФрд░ рдЙрд╕ B рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ A рдХреЛ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рдХрд╛ рдпрд╣ рднреА рд▓рд╛рдн рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рд▓рдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдирд╛рдо рдирд╣реАрдВ рд╣реИрдВред

рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╡рд┐рд░рд╛рд╕рдд рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ A рдФрд░ B рджреЛрдиреЛрдВ Node2D рд╣реИрдВ рдФрд░ рд╣рдо A: func baz(): print(self.position) рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЬрдм рд╣рдо b.baz() рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗ рддреЛ рдХреМрди рд╕реА рд╕реНрдерд┐рддрд┐ рдореБрджреНрд░рд┐рдд рд╣реЛрдЧреА?
рдПрдХ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЙрд▓рд░ self рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗред b.foo() рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ foo() рдХреЛ b рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдФрд░ bafoo() рдХреЛ foo() рдХреЛ рд╕реНрд╡рдпрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╛рдЗрдерди (рдЬрд╣рд╛рдВ x.f(y) рдХреЗ рд▓рд┐рдП рдЪреАрдиреА рд╣реИ f(x,y) ) рдЬреИрд╕реА рдлреНрд░реАрд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдирд╛ рд╡рд╛рдХрдИ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдФрд░, рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдЪрд╛рд░:

рдХреЗрд╡рд▓ рдлреНрд░реАрд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реИрд▓реА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред

рдпрджрд┐ рд╣рдо рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП x.f(y) == f(x,y) рд╕рдореНрдореЗрд▓рди рдХреЛ рдЕрдкрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

class Jumper:
    static func jump(_self: KinematicBody2D):
        # jump implementation

class Runner:
    static func run(_self: KinematicBody2D, direction: Vector2):
        # run implementation

class Character:
    extends KinematicBody2D
    func run = Runner.run       # Example syntax
    func jump = Jumper.jump

func main():
    var character = Character.new()
    character.jump()
    character.run(Vector2(1,0))

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

@jabcross рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд╕рдВрдж рд╣реИ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдЪрд╛рд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

рдиреЗрдорд╕реНрдкреЗрд╕ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ using A , рдЕрдиреНрдп рдШреЛрд╖рдгрд╛рддреНрдордХ рдЪреАрдЬреЗрдВ рдмрд╛рд╣рд░реА рд▓рдЧрддреА рд╣реИрдВред

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

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

A.gd рдХреЗ рд╢реАрд░реНрд╖ рдкрд░:

extends Trait as Node2D
is Trait as Node2D
is Trait extends B
extends B as Trait

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

class_name ArrayExt
static func sum(_self: Array) -> int:
    var sum: int = 0
    for a_value in _self:
        sum += a_value
    return sum

using ArrayExt
func _ready():
    var a = [1, 2, 3]
    print(a.sum())

@jabcross рдЕрдЧрд░ рд╣рдордиреЗ рдХреЙрд▓ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реИрдореНрдмрд╕ рдФрд░/рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ (рдФрд░ рд╕рдВрдЧрдд рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП callable рдкреНрд░рдХрд╛рд░ рдерд╛), рддреЛ рд╣рдо GDScript рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛)ред рджреА рдЧрдИ, рдЙрд╕ рд╕рдордп @vnen рдХреЗ #18698 рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдзрд┐рдХ рдШреВрдордирд╛, рд▓реЗрдХрд┐рди...

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

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

@vnen рдЖрд╣, рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЧрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдФрд░ рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рднреА рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрджрд░реНрд╢ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рд╣рдордиреЗ рдПрдХ рд╢реБрджреНрдз рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреА рдереА, рддреЛ рдХреНрдпрд╛ рдЖрдк рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд╣рдд using TraitName рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗ рдЧрдП extends trait TraitName рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рдереЗ? рдФрд░ рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рдпрд╛ рдЗрд╕реЗ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдпрджрд┐ рд╣рдордиреЗ рдПрдХ рд╢реБрджреНрдз рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреА рдереА, рддреЛ рдХреНрдпрд╛ рдЖрдк рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рддрд╣рдд using TraitName рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗ рдЧрдП extends trait TraitName рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рдереЗ?

рдпрд╣реА рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдХреЛрдб рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╛рдлреА рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреВрдВрдЧрд╛ (рдпрджрд┐ рд╕рдВрдХрд▓рди-рд╕рдордп рдкрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ)ред рд▓рдХреНрд╖рдг рдЕрдиреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рднреА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдФрд░ рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ, рдпрд╛ рдЗрд╕реЗ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

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

@vnen рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рдереЗ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреА, рдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛?

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

рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ "рдЖрдпрд╛рдд" рд╣реЛрдЧреАред рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдкреВрд░реНрдгрддрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреБрдЪреНрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@vnen рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рд╕рдиреЛрдб рдореЗрдВ trait рдзреНрд╡рдЬ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкрд╛рд░реНрд╕ рдХрд░реЗрдВрдЧреЗред рдФрд░ рдлрд┐рд░ рдпрджрд┐ рдЖрдк using рдХрдерди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рднреА рдЧреБрдгреЛрдВ/рд╡рд┐рдзрд┐рдпреЛрдВ/рд╕рдВрдХреЗрддреЛрдВ/рд╕реНрдерд┐рд░рд╛рдВрдХ/рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдорд░реНрдЬ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ред

  1. рдпрджрд┐ рдХреЛрдИ рд╡рд┐рдзрд┐ рдЯрдХрд░рд╛рддреА рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореВрд▓ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджреЗрдЧрд╛, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд░рд╣рд╛ рдерд╛ред

    • рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рд╡рд┐рд▓рдп" рд╡рд┐рдзрд┐ рд╣реЛ рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ?

  2. рдпрджрд┐ рдХреЛрдИ рдЧреБрдг, рд╕рдВрдХреЗрдд, рдФрд░ рдирд┐рд░рдВрддрд░ рдУрд╡рд░рд▓реИрдк рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░/рд╕рд┐рдЧреНрдирд▓ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдмреЗрдореЗрд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдмрд╕ рдЗрд╕реЗ рд╕рдВрдкрддреНрддрд┐/рд╕рдВрдХреЗрдд/рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ "рд╡рд┐рд▓рдп" рдорд╛рдиреЗрдВред рдЕрдиреНрдпрдерд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░/рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд┐рд░реЛрдз (рдПрдХ рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВред

рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░? рдпрд╛ рдХреНрдпрд╛ рд╣рдореЗрдВ рдЧреИрд░-рд╡рд┐рдзрд┐ рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдордирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдШрд░реНрд╖ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

@willnationsdev рдзреНрд╡рдирд┐ "рд╣реАрд░реЗ рдХреА рд╕рдорд╕реНрдпрд╛" (рдЙрд░реНрдл "рдореМрдд рдХрд╛ рдШрд╛рддрдХ рд╣реАрд░рд╛") рдХреА рддрд░рд╣, рд╡рд┐рднрд┐рдиреНрди рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ред

рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдпрд╛рдж рдЖрддреА рд╣реИ:
@vnen рдХреНрдпрд╛ рд▓рдХреНрд╖рдг рдЕрдиреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ?

@ рдЬрд╛рд╣рдж 2602 рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛ рдХрд┐ рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ

рд▓рдХреНрд╖рдг рдЕрдиреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рднреА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ jahd2602 рдкрд░реНрд▓/рдкрд╛рдпрдерди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рд╡рд╛рд▓реА рдкрд░рддреЛрдВ рдХрд╛ "рдвреЗрд░" рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЕрдВрддрд┐рдо-рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рдВрдШрд░реНрд╖ рд╣реЛ, рдФрд░ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░реЗрдВред рдпрд╣ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдЬрдм рддрдХ рдЖрдкрдХреЗ рдпрд╛ @vnen рдХреЗ рдкрд╛рд╕ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдЪрд╛рд░ рди рд╣реЛрдВред рд╕рдорд╛рдзрд╛рди рдЬреЗрд╣рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдЕрд╡рд▓реЛрдХрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреБрдЫ рдкреНрд░рд╢реНрдиред

рдкрд╣рд▓рд╛: рд╣рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпреВрдЬрд┐рдВрдЧ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ using рдХрдерди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдерд┐рд░-рдореВрд▓реНрдп рд╡рд╛рд▓реЗ GDScript рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

using preload("res://my_trait.gd") # a preloaded expression
using ScriptClass.MyTrait # a const resource
using Autoload.MyTrait # a const resource
using MyTrait # a regular script class

рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБред

рджреВрд╕рд░рд╛: рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░/рдпрд╛ рдЙрд╕рдХреЗ рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

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

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдпрд╣ рдПрдХ рдЯреВрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рдКрдкрд░ рдЯреВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░, рдпрджрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдЙрд╕реА рдкрдВрдХреНрддрд┐ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдмрддрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ рдФрд░ рдпрджрд┐ рд╡реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ class_name рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВред рдпрджрд┐ рд╡реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ class_name <name> рдареАрдХ рд╣реИред рдлрд┐рд░, рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж extends рдФрд░/рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рд╕реНрд╡рдпрдВ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдорд╛рдиреНрдп рдорд╛рдиреВрдВрдЧрд╛:

# Global name from trait keyword.
trait MyTrait extends BaseTrait

# Global name from class_name keyword, but is still a trait and also happens to be a tool script.
tool
trait
extends BaseTrait
class_name MyTrait

# A trait with no global name associated with it. Does not extend anything.
trait

рддреАрд╕рд░рд╛: рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдФрд░/рдпрд╛ рдЗрд░рд╛рджреЗ/рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдЪрд░реНрдЪрд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдХрд┐ рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рдЕрдиреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдореЗрдВ рдПрдХ TraitA рдХреЛ extend Node рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, TraitA рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдиреЛрдб рд╕реНрд╡рддрдГ рдкреВрд░реНрдгрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдПрдХ рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐ рднреА рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдВ рдпрджрд┐ рд╣рдо using TraitA рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рдиреЛрдб рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рд╡реНрдпреБрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░?

рдЪреМрдерд╛: рд▓рдХреНрд╖рдг рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдиреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпрд╛ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ extends рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рдХреНрд▓рд╛рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЗрд╕ рдХрдерди рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЖрдзрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ рд▓рдХреНрд╖рдг рдмрд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ using рдмрдпрд╛рди рд╣реИрдВ рдЬреЛ рдЙрди рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рдЙрдк-рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ?

# base_trait.gd
trait
func my_method():
    print("Hello")

# derived_trait.gd
trait
using preload("base_trait.gd")
func my_method():
   print("World") # overrides previous method, will only print "World".

рдмреЗрд╢рдХ, рдпрд╣рд╛рдВ рд▓рд╛рдн рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдХрдИ using рдмрдпрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдХреЗ рддрд╣рдд рдХрдИ рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рдмреИрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рд╕реА ++ рдХреЗ рд╕рдорд╛рди рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдХрдИ рдЕрдиреНрдп рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдкрд╛рдВрдЪрд╡рд╛рдВ: рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП using рдпрд╛ extends рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реНрд╡рдпрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднреАрддрд░, рдЬрдм рд╣рдо рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ .<method_name> рдЖрдзрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдХреНрдпрд╛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдХреЙрд▓ рд╣рдореЗрд╢рд╛ рд╡рд░реНрдЧ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдпрд╣рд╛рдВ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ?

cc @vnen

рдкрд╣рд▓рд╛: рд╣рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпреВрдЬрд┐рдВрдЧ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ using рдХрдерди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдерд┐рд░-рдореВрд▓реНрдп рд╡рд╛рд▓реЗ GDScript рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

using preload("res://my_trait.gd") # a preloaded expression
using ScriptClass.MyTrait # a const resource
using Autoload.MyTrait # a const resource
using MyTrait # a regular script class

рдореИрдВ рдЙрди рд╕рднреА рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВред рд▓реЗрдХрд┐рди рдкрде рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕реАрдзреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: using "res://my_trait.gd"

рджреВрд╕рд░рд╛: рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдФрд░/рдпрд╛ рдЙрд╕рдХреЗ рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП?

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

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдпрд╣ рдПрдХ рдЯреВрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рд╕рдмрд╕реЗ рдКрдкрд░ рдЯреВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░, рдпрджрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдЙрд╕реА рдкрдВрдХреНрддрд┐ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдмрддрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ рдФрд░ рдпрджрд┐ рд╡реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ class_name рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВред рдпрджрд┐ рд╡реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ class_name <name> рдареАрдХ рд╣реИред рдлрд┐рд░, рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж extends рдФрд░/рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж рд╕реНрд╡рдпрдВ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдорд╛рдиреНрдп рдорд╛рдиреВрдВрдЧрд╛:

# Global name from trait keyword.
trait MyTrait extends BaseTrait

# Global name from class_name keyword, but is still a trait and also happens to be a tool script.
tool
trait
extends BaseTrait
class_name MyTrait

# A trait with no global name associated with it. Does not extend anything.
trait

tool рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рдореИрдВ trait рдХрд╛ рдЙрдкрдпреЛрдЧ trait tool рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдХрд░реВрдВрдЧрд╛ред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣ рдкрд╣рд▓реА рдЪреАрдЬрд╝ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рдХреАрд╡рд░реНрдб рдХреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдо рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдЙрдирдХреЗ рд▓рд┐рдП class_name рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрдХреНрд╖рд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВред

рддреАрд╕рд░рд╛: рдХреНрдпрд╛ рд╣рдореЗрдВ рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдФрд░/рдпрд╛ рдЗрд░рд╛рджреЗ/рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рд╕рдВрдкрд╛рджрдХ рдХреА рдЦрд╛рддрд┐рд░ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ред рдпрд╣реАрдВ рдкрд░ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛рдо рдЖрдПрдВрдЧреЗред

рдЕрдм рдЕрдЧрд░ рд╣рдо рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ (рдФрд░ рдЙрд╕рдХреЗ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡) рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдареАрдХ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ: рдпрд╣ рдПрдХ рд╡рд░реНрдЧ рд╕реЗ рд╕рд╛рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рд╕рдВрдХрд▓рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдВрдЪ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╣реА рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдЪреМрдерд╛: рд▓рдХреНрд╖рдг рд╣реЛрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдиреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпрд╛ рд╣рдо рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ extends рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЛ рдХреНрд▓рд╛рд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЗрд╕ рдХрдерди рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдЖрдзрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ рд▓рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмрд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ using рдмрдпрд╛рди рд╣реИрдВ рдЬреЛ рдЙрдк-рдЖрдпрд╛рдд _those_ рд▓рдХреНрд╖рдг рд╣реИрдВ?

рдЦреИрд░, рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рд╢рдмреНрджрд╛рд░реНрде рдХреА рдмрд╛рдд рд╣реИред рдЬрдм рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рд▓рдХреНрд╖рдг рджреВрд╕рд░реЗ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ extends рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛ред рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ extends рдХреЗ рд╕рд╛рде рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, using рдХреЗ рд╕рд╛рде рдЖрдк рдХрдИ рдЕрдиреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ using рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ, рдЬрдм рддрдХ рдХреЛрдИ рдЪрдХреНрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рдкрд╛рдВрдЪрд╡рд╛рдВ: рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП using рдпрд╛ extends рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реНрд╡рдпрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднреАрддрд░, рдЬрдм рд╣рдо рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ .<method_name> рдЖрдзрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП? рдХреНрдпрд╛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рдХреЙрд▓ рд╣рдореЗрд╢рд╛ рд╡рд░реНрдЧ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдпрд╣рд╛рдВ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ?

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

рдУрдЯреАрдУрдПрдЪ, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓рдЧрднрдЧ "рд╢рд╛рдорд┐рд▓" рдХреА рддрд░рд╣ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╢рдмреНрджрд╢рдГ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ рддреЛ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдореИрдВ рдбреЙрдЯ рдиреЛрдЯреЗрд╢рди рдХреЛ рдордирд╛ рдХрд░ рджреВрдВрдЧрд╛ред

рдЙрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдЕрдиреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ DoubleJumper рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛ Jumper , рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ Upgradable рдФрд░ рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ KinematicBody2D ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдВрдЧ рдЖрдкрдХреЛ рдЙрди рдЬреИрд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред KinematicBody2D: Jumper, Upgradable рдЬреИрд╕рд╛ рдХреБрдЫред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдо рдЯрд╛рдЗрдк рдХреЛ рдПрдиреЛрдЯреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП : рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдХреЗрд╡рд▓ KinematicBody2D & Jumper & Upgradable рдпрд╛ рдХреБрдЫ рдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо kill() рд╡рд┐рд╢реЗрд╖рддрд╛ Jumper рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ Enemy рдФрд░ Player рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рджреЛрдиреЛрдВ рдХреЛ рд╕рдорд╛рди Jumper рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд░рдЦрддреЗ рд╣реБрдПред рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ?

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

рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдпреЛрдЬрдирд╛ (рдЕрднреА рддрдХ) рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрдирд╛рдПрдБ

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

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдордЬрдмреВрдд рдкреНрд░рдХрд╛рд░ рдХреА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдкреНрд░рдгрд╛рд▓реА (рд╢рд╛рдпрдж рдмреВрд▓рд┐рдпрди рд░рдЪрдирд╛ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ/рдЧреИрд░-рдирд▓ рдХреЗ рд╕рд╛рде) рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред рд▓рдХреНрд╖рдг рд╕рд╣реА рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдВрдЧреЗред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

trait A
func m():
  print("A")

trait B
func m():
  print("B")

class C
using A
using B

func c():
  A.m()
  B.m()
  m()

рдЬреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ: A , B , B ред


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

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

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

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

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

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред

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

рдЗрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдиреЛрдб рдХреЛ рдЧреБрдгреЛрдВ рдХреЛ "рдирд┐рд░реНрдпрд╛рдд" рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рдорд╛рдиреЛрдВ рдХреЛ рдЙрдкрдпреБрдХреНрдд рдмрдЪреНрдЪреЗ рдХреЛ _ready рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрдЪреНрдЪреЗ рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдо рдиреЛрдб рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдЙрдк-рджреГрд╢реНрдп рдореЗрдВ рд░реВрдЯ рдмрдо рдиреЛрдб "detonation_time" рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдпрд╣ _ready рдореЗрдВ $Timer.wait_time = detonation_time рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╣рдореЗрдВ рдЧреЛрджреЛрдЯ рдХреЗ UI рдореЗрдВ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрдм рднреА рд╣рдо рдЗрд╕реЗ рдмрдЪреНрдЪреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдФрд░ рдЯрд╛рдЗрдорд░ рддрдХ рдбреНрд░рд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐
1) рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдпрд╛рдВрддреНрд░рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
2) рдпрд╣ рд╢рд╛рдпрдж рд╕реАрдзреЗ рдмрдЪреНрдЪреЗ рдХреЗ рдиреЛрдб рдореЗрдВ рдЙрдЪрд┐рдд рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝реА рд╕реА рдЕрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

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

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

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

рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╣реИ "рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕" рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ Node. рдЗрд╕ рддрд░рд╣ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЧреБрдгреЛрдВ/рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рджреЛ рд╕реНрд░реЛрдд рд╣реЛрдВрдЧреЗ, рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рд╡реЗ рдЬреЛ рджреГрд╢реНрдп рд╕рдВрд░рдЪрдирд╛ рдХреЗ рднреАрддрд░ рдмрдЪреНрдЪреЛрдВ рд╕реЗ "рдмреБрд▓рдмреБрд▓реЗ" рд╣реЛрддреЗ рд╣реИрдВред рддреЛ рдмрдо рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдмрди рдЬрд╛рдПрдЧрд╛ export lifted var $Timer.wait_time [= value?] as detonation_time Bomb.gd рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рджрд╕реНрдп рдЪрд░ рдЕрдиреБрднрд╛рдЧ рдХреЗ рднреАрддрд░ред рд╕рд┐рд╕реНрдЯрдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ _ready рдХреЙрд▓рдмреИрдХ рдореЗрдВ $Timer.wait_time = detonation_time рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЧреЗрдЯрд░/рд╕реЗрдЯрд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдЬреЛ рдмрдо рдиреЛрдб рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ $Bomb.detonation_time = 5 рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк $Timer.wait_time = 5 рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдУрдкреА рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ MoveRightTrait рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣ рдиреЛрдб рд╣реЛрдЧрд╛ рдЬрд┐рд╕рд╕реЗ mysprite.gd рд╕рдВрд▓рдЧреНрди рд╣реИ, MoveRightTrait рдЪрд╛рдЗрд▓реНрдб рдиреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рдлрд┐рд░ mysprite.gd рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ lifted func $MoveRightTrait.move_right [as move_right] рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛ (рд╢рд╛рдпрдж 'as' рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдирд╛рдо рд╡рд╣реА рд╣реЛрдЧрд╛)ред рдЕрдм mysprite.gd рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ move_right рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреБрдХреНрдд рдЪрд╛рдЗрд▓реНрдб рдиреЛрдб рдХреЛ рд╕реМрдВрдк рджреЗрдЧрд╛ред рд╢рд╛рдпрдж рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдмреБрджрдмреБрджрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЬрдбрд╝ рд╕реЗ рдПрдХ рдмрдЪреНрдЪреЗ рдХреЗ рдиреЛрдб рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗ? рд╢рд╛рдпрдж рдкреВрд░реЗ рдиреЛрдбреНрд╕ рдХреЛ func, рд╕рд┐рдЧреНрдирд▓ рдпрд╛ var рдХреЗ рдмрд┐рдирд╛ рдХреЗрд╡рд▓ lifted $MoveRightTrait [as MvR] рдХреЗ рд╕рд╛рде рдмреБрд▓рдмреБрд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ MoveRightTrait рдкрд░ рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ mysprite рд╕реЗ рд╕реАрдзреЗ mysprite.move_right рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛ mysprite.MvR.move_right рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ 'as MvR' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕реНрдб рд╢рд╛рдЦрд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдЙрдирдХреА "рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕" рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдП рдФрд░ рдЧреЛрдбреЛрдЯ рдХреА рдЧрддрд┐рд╢реАрд▓ рджреГрд╢реНрдп рдкреНрд░рдгрд╛рд▓реА рдХреА рд╢рдХреНрддрд┐ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рдПред рдмреЗрд╢рдХ, рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкрдХреНрд╖ рд╡рд┐рд╡рд░рдг рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЪрд╛рдЗрд▓реНрдб рдиреЛрдбреНрд╕ рдХреЛ рд░рди рдЯрд╛рдЗрдо рдкрд░ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреБрд▓рдмреБрд▓реЗ/рдЙрдард╛рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЙрд▓/рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдпрджрд┐ рд╕рд╣реА рдиреЛрдбрдкрд╛рде рд╡рд╛рд▓рд╛ рдиреЛрдб рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рдЙрдард╛рдП рдЧрдП рдЧреБрдг рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ? [рд╣рд╛рдВ, рдЖрдИрдПрдордУ] рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдиреЛрдб рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ 'рдЙрдард╛рдпрд╛' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдмреБрд▓рдмреБрд▓рд╛/рд▓рд┐рдлреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрднреА рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреБрдкреНрд▓рд┐рдХреЗрдЯ "рдЬреИрд╕рд╛ {name}" рдпрд╛ "рд▓рд┐рдлрд╝реНрдЯреЗрдб $Timer1 рд▓рд┐рдлреНрдЯреЗрдб $Timer2" рдХреЗ рд╕рд╛рде рдирд╛рдо рдХрд╛ рдЯрдХрд░рд╛рд╡ рд╕рдВрднрд╡ рд╣реИ, рдЬрд╣рд╛рдВ рдиреЛрдбреНрд╕ рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рдЧреБрдг/рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреБрднрд╛рд╖рд┐рдпрд╛ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдРрд╕реА рддрд╛рд░реНрдХрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ред

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдореЗрдВ рд╡рд╣ рдмрд╣реБрдд рдХреБрдЫ рджреЗрдЧрд╛ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЕрдЧреНрд░реЗрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХрддрд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрд╛рддреА рд╣реИред рд╕рд╛рде рд╣реА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИ, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдпрд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдЗрддрдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡реИрд╕реЗ рднреА, рдЕрдЧрд░ рдЖрдкрдХреЛ рдЗрддрдирд╛ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИ рддреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВрдиреЗ рд╣рд░ рдЬрдЧрд╣ "рдЙрдард╛рдпрд╛" рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдЙрджрд╛рд╣рд░рдг рд╣реИред
using var $Timer.wait_time as detonation_time рдпрд╛ using $Timer рдЬреИрд╕рд╛ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрддрдирд╛ рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЪрд╛рдЗрд▓реНрдб рдиреЛрдбреНрд╕ рд╕реЗ рдЫрджреНрдо-рд╡рд┐рд░рд╛рд╕рдд рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╢рд╛рдЦрд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдПрдХ рд╕реБрд╕рдВрдЧрдд рдПрдХрд▓ рдмрд┐рдВрджреБ рдмрдирддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдиреЛрдб рдпрд╛ рдЗрд╕рдХреЗ рдЙрдкрд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрдбрд╝реЗ рдШрдЯрдХ рдореЗрдВ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗред

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

рдпрджрд┐ рдпрд╣ рдХрднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЦреЛрдЬ рдХреЗ рд▓рд╛рдпрдХ рдХреБрдЫ рд╣реИ, рддреЛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рд╕реНрдерд╛рди рдХреЗ рдкрд╣рд▓реВ рд╣реИрдВ:
1) рдХреНрдпрд╛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рддрддреНрдХрд╛рд▓ рдмрдЪреНрдЪреЛрдВ рдХреЛ "рдЙрдкрдпреЛрдЧ" рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред IOW using $Timer рд▓реЗрдХрд┐рди рдирд╣реАрдВ using $Bomb/Timer'? This would be simpler but would force us to write boilerplate in some cases. I say that a full NodePath ROOTED in the Node to which the script is attached should be legal [but NO references to parents/siblings allowed]. 2) Should there be an option that find_node рдХреЗ the "using"-ed node instead of following a written in NodePath? For example "рдЯрд╛рдЗрдорд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ with a string for the pattern would be slower but the forwarding architecture would continue to work if a referenced node's position in the sub-tree changes at run time. This could be used selectively for child nodes that we expect to move around beneath the root. Of course syntax would have to be worked out especially when using a particular member (eg. var "Timer" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред рдбреЗрдЯреЛрдиреЗрд╢рди_рдЯрд╛рдЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддреАрдХреНрд╖рд╛_рдЯрд╛рдЗрдо is icky). 3) Should there be a way query for certain functionality [equivalent to asking if an interface is implemented or a child node is present]? Perhaps "using" entire nodes with aliases should allow testing the alias to be a query. So MoveRightTrait рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдпрд░реЗрдХреНрд╢рдирд▓рдореВрд╡рд░ in a script would result in рдиреЛрдб.рдбрд╛рдпрд░реЗрдХреНрд╢рдирд▓рдореЛрд╡рд░ returning the child MoveRightTrait. This is logical because рдиреЛрдб.DirectionalMover.move_right() calls the method on the child MoveRightTrait. Other nodes without that statement would return null. So the statement рдЕрдЧрд░ node.DirectionalMover:` рдХрдиреНрд╡реЗрдВрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдмрди рдЬрд╛рдПрдЧрд╛ред
4) рд╕реНрдЯреЗрдЯ рдкреИрдЯрд░реНрди рдХреЛ "рдЙрдкрдпреЛрдЧ"-рдПрдб рдиреЛрдб рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрджрд▓рдХрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ [рдмрддрдЦ рдЯрд╛рдЗрдкрд┐рдВрдЧ] рдФрд░ рдЙрд╕реА рдиреЛрдбрдкрд╛рде рдЬреИрд╕рд╛ рдХрд┐ "рдЙрдкрдпреЛрдЧ" рдХрдерди рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рд╣реИред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╕реАрди рдЯреНрд░реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд▓рдЧрднрдЧ рдореБрдлреНрдд рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдмрджрд▓реЗ рдЧрдП рдмрдЪреНрдЪреЗ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдмрд╣рд╛рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

рдпрд╛ рдХреЗрд╡рд▓ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдХреЗ рд╕реНрддрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ (рдпрд╣ рдХрд╛рдлреА рдмреЛрдЭрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддрдм рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдирдП рдШрдЯрдХ рдХреЗ рд╕рд╛рде рд╕рднреА рдиреЛрдб рдкрде рддреЛрдбрд╝рддреЗ рд╣реИрдВ)ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛ, рдореЗрдЯрд╛/рдорд▓реНрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕рд╛ рдХреБрдЫ рдПрдХ рдиреЛрдб рдкрд░ рдПрдХрд╛рдзрд┐рдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реИ? рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╕рдорд╛рдзрд╛рди рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ ...

C++ (GDNative) рдХреЛ рдорд┐рдХреНрд╕ рдореЗрдВ рдлреЗрдВрдХрдиреЗ рд╕реЗ рдЪреАрдЬреЗрдВ рдФрд░ рднреА рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ _ready рдФрд░ _init рд╡рд╣рд╛рдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ (рдкрдврд╝реЗрдВ: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЖрдзрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред

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

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

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

рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдЬрдВрдЧ рдХреЗ рд▓рдХреНрд╖рдгреЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ (https://doc.rust-lang.org/1.8.0/book/traits.html), рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╣рд╛рд╕реНрдХреЗрд▓ рдЯрд╛рдЗрдкрдХреНрд▓рд╛рд╕ рдХреА рддрд░рд╣ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░рдпреБрдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЖрдк рдЗрд╕рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЖрдк рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЬрдВрдЧ рдХреЗ рд▓рдХреНрд╖рдг рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИрдВ?

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

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

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

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

рдХрд┐рд╕реА рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдореЗрдВ рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ (рдФрд░ рд╢рд╛рдпрдж рд▓рдХреНрд╖рдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛)ред

1. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреВрд▓ рдмрдирд╛рдПрдВ:

@willnationsdev https://github.com/godotengine/godot/issues/23101#issuecomment -431468744

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

рдЖрдкрдХреЗ рдкрджрдЪрд┐рдиреНрд╣реЛрдВ рдкрд░ рдЪрд▓рдирд╛...

tool
extends EditorScript

const TYPES = [
    'Node',
    'Node2D',
]
const TYPES_PATH = 'types'
const TYPE_BASENAME_TEMPLATE = 'component_%s.gd'

const TEMPLATE = \
"""class_name Component{TYPE} extends {TYPE}

signal host_assigned(node)

export(bool) var enabled = true

export(NodePath) var host_path
var host

func _ready():
    ComponentCommon.init(self, host_path)"""

func _run():
    _update_scripts()


func _update_scripts():

    var base_dir = get_script().resource_path.get_base_dir()
    var dest = base_dir.plus_file(TYPES_PATH)

    for type in TYPES:
        var filename = TYPE_BASENAME_TEMPLATE % [type.to_lower()]
        var code = TEMPLATE.format({"TYPE" : type})
        var path = dest.plus_file(filename)

        print_debug("Writing component code for: " + path)

        var file = File.new()
        file.open(path, File.WRITE)
        file.store_line(code)
        file.close()

2. рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░реВрдЯ):

class_name ComponentCommon

static func init(p_component, p_host_path = NodePath()):

    assert(p_component is Node)

    # Try to assign
    if not p_host_path.is_empty():
        p_component.host = p_component.get_node(p_host_path)

    elif is_instance_valid(p_component.owner):
        p_component.host = p_component.owner

    elif is_instance_valid(p_component.get_parent()):
        p_component.host = p_component.get_parent()

    # Check
    if not is_instance_valid(p_component.host):
        push_warning(p_component.name.capitalize() + ": couldn't find a host, disabling.")
        p_component.enabled = false
    else:
        p_component.emit_signal('host_assigned')

рдкрд╣рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдкрд░ рдПрдХ рдШрдЯрдХ (рд╡рд┐рд╢реЗрд╖рддрд╛) рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

class_name ComponentNode2D extends Node2D

signal host_assigned(node)

export(bool) var enabled = true

export(NodePath) var host_path
var host

func _ready():
    ComponentCommon.init(self, host_path)

(рд╡реИрдХрд▓реНрдкрд┐рдХ) 3. рдШрдЯрдХ рдмрдврд╝рд╛рдПрдБ (рд▓рдХреНрд╖рдг)

@vnen https://github.com/godotengine/godot/issues/23101#issuecomment -471816901

рдпрд╣реА рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдХреЛрдб рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рдХрд╛рдлреА рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рднреА рджреВрдВрдЧрд╛ (рдпрджрд┐ рд╕рдВрдХрд▓рди-рд╕рдордп рдкрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ)ред рд▓рдХреНрд╖рдг рдЕрдиреНрдп рд▓рдХреНрд╖рдгреЛрдВ рдХрд╛ рднреА рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдкрдХреЗ рдкрджрдЪрд┐рдиреНрд╣реЛрдВ рдкрд░ рдЪрд▓рдирд╛...

class_name ComponentMotion2D extends ComponentNode2D

const MAX_SPEED = 100.0

var linear_velocity = Vector2()
var collision

export(Script) var impl
...

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП Script s рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрди рдШрдЯрдХреЛрдВ рдореЗрдВ рдкреНрд░рддрд┐ рдШрдЯрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрд╕реНрдЯ/рд░реВрдЯ рдиреЛрдб рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ, ComponentMotion2D рдореЗрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрдВрдЧреА:

  • motion_kinematic_body_2d.gd
  • motion_rigid_body_2d.gd

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

рдШрдЯрдХ рд╕реНрд╡рдпрдВ рдХреЛ onready рд╕рджрд╕реНрдп рдмрдирд╛рдХрд░ рдЬрдбрд╝ рдореЗрдВ "рд╣рд╛рд░реНрдбрд╡рд╛рд░реНрдб" рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЛ рдХрдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ object.motion рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЦрд░реНрдЪ рдХреЗ рд╕рд╛рде)

extends KinematicBody2D

onready var motion = $motion # ComponentMotion2D

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

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

рдПрдХреНрд╕рдЯреЗрдВрд╢рди.рдЬреАрдбреА

# any script that uses this method must be an instance of `Node2D`
static func distance(self source: Node2D, target: Node2D):
    return source.global_position.distance_to(target.global_position)

# any script that uses this method must be an instance of `Rigidbody2D`
# a `Sprite` instance cannot use this method
static func distance(self source: Rigidbody2D, target: Node2D):
    return source.global_position.distance_to(target.global_position)

рдлрд┐рд░ рдЬрдм рдЖрдк distance рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд╕ рдпрд╣ рдХрд░реЗрдВ:

рдЦрд┐рд▓рд╛рдбрд╝реА.рдЬреАрдбреА

func _ready() -> void:
    print(self.distance($Enemy))
    print($BulletPoint.distance($Enemy))

рдореИрдВ рдЗрд╕рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╣реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдзрдиреНрдпрд╡рд╛рджред

@TheColorRed рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдереАрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рднреА рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ред


рдПрдХ рдФрд░ рдиреЛрдЯ рдкрд░, рдореИрдВ рд╢рд╛рдпрдж рдЬреАрдбреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЬреАрдЖрдИрдкреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдЦреЛрд▓реВрдВрдЧрд╛ (рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЕрдЧрд░ @willnationsdev рдмреБрд░рд╛ рди рдорд╛рдиреЗрдВ)ред

рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рд▓рдХреНрд╖рдг рдПрдХ рдУрдУ рднрд╛рд╖рд╛ рдореЗрдВ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ (рдПрдХрд╛рдзрд┐рдХ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмрд┐рдирд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛)ред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рдЧрддрд┐рд╢реАрд▓ рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдВрднрд╡ рд╣реИрдВ

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

рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ "рдкрд┐рдВрдкреНрд╕" рдирд╛рдо рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬреАрдбреАрдПрд╕ рдЧрддрд┐рд╢реАрд▓ рд╣реИ?

рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ "рдЧрддрд┐рд╢реАрд▓" рдХреА рдмрд╣реБрдд рд╕рд╛рд░реА рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ рд╣реИрдВред рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП: рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рдХрд╛рд░ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдзрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдЬрд╛рдВрдЪ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдПрдХ рддрд░рдл рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛)ред

рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рдХреЗрд╡рд▓ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рддрдХ рд╣реА рд╕реАрдорд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВ

рдЕрдЧрд░ рд╣рдо рдРрд╕рд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╣рдо рдХреЗрд╡рд▓ GDScript рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреНрдп рдЪрд░реНрдЪрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдЬрд╛рдирд╛ рд╣реИред

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

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

рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЕрд▓рд╛ рдЬреЗрдПрд╕ рдпрд╛ рдХрдХреНрд╖рд╛рдУрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕рд┐рд░реНрдл рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрдиреНрдп рдЧрддрд┐рд╢реАрд▓ рддрд░реАрдХреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ pimps (extред рд╡рд┐рдзрд┐рдпреЛрдВ) рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреВрдВрдЧрд╛ред

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

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

рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реБрдИ рд╣реИред

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╡рд░реНрдЧ рд╣реИрдВ рдЬреЛ рдПрдХ рд╣реА рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдкреАрдЖрдИ рдХреЗ рд╕рдорд╛рди рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
рд╡реЗрдпрд░рд╣рд╛рдЙрд╕: рд╡рд┐рддреНрдд, рд╣рдЯрд╛рдирд╛, рдорд╛рдЙрд╕ рдЗрдВрдЯрд░реЗрдХреНрд╢рди + рдЕрдиреНрдп
рд╡рд╛рд╣рди: рд╡рд┐рддреНрдд, рд╣рдЯрд╛рдирд╛, рдорд╛рдЙрд╕ рдЗрдВрдЯрд░реЗрдХреНрд╢рди + рдЕрдиреНрдп
рд╡рд╛рд╣рди рдЯрд░реНрдорд┐рдирд▓: рд╡рд┐рддреНрдд, рд╣рдЯрд╛рдирд╛, рдорд╛рдЙрд╕ рдЗрдВрдЯрд░реЗрдХреНрд╢рди + рдЕрдиреНрдп

рд╡рд┐рддреНрдд рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдмреЙрдпрд▓рд░ рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ get_finances_component() рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рдПрдкреАрдЖрдИ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рджреВрд╕рд░реЗ:
рдорд╛рдЙрд╕ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдФрд░ рдбрд┐рд▓реЗрдХреНрд╢рди рдореБрдЭреЗ рд╕рд┐рд░реНрдл рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреБрдЫ рд░рдЪрдирд╛ рдпрд╣рд╛рдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдЬреАрдм рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛:

Warehouse:
  func delete():
      get_delete_component().delete(self);

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

рдорд╛рдЙрд╕ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдФрд░ рдбрд┐рд▓реЗрдХреНрд╢рди рдореБрдЭреЗ рдмрд╕ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреБрдЫ рд░рдЪрдирд╛ рдпрд╣рд╛рдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдореИрдВрдиреЗ рдХреБрдЫ рдЕрдЬреАрдм рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ onready рдиреЛрдбреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

# character.gd

var input = $input # input component

func _set(property, value):
    if property == "focused": # override
        input.enabled = value
    return true

рддреЛ рдпрд╣:

character.input.enabled = true

рдпрд╣ рдмрди рдЬрд╛рддрд╛ рд╣реИ:

character.focused = true

рдЬреИрд╕рд╛ рдХрд┐ @Calinou рдиреЗ рдХреГрдкрдпрд╛ рдореЗрд░реЗ рдореБрджреНрджреЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд┐рдпрд╛ рд╣реИ https://github.com/godotengine/godot-proposals/issues/758 рдЗрд╕рд╕реЗ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ? рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЕрдиреНрдп рдУрд╡рд░рд╣реЗрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

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

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

рдореБрдЦреНрдп ( godotengine/godot ) рдЯреНрд░реИрдХрд░ рдЕрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрдЧ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХрд╛рд░реНрдп рдкрд░ рдмреЗрд╣рддрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдо рдореБрдЦреНрдп рдореБрджреНрджреЗ рдЯреНрд░реИрдХрд░ рдкрд░ рд╕рднреА рдкреБрд░рд╛рдиреЗ рдлреАрдЪрд░ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред

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

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

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ivanskodje picture ivanskodje  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

EdwardAngeles picture EdwardAngeles  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

blurymind picture blurymind  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

RebelliousX picture RebelliousX  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ducdetronquito picture ducdetronquito  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ