рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдЧреЗрдо рдмрдирд╛рдирд╛ - рднрд╛рдЧ 3: рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЛ рдПрдХрддрд╛ (UniLua) рдореЗрдВ рдмрд╛рдВрдз рджреЗрддреЗ рд╣реИрдВ


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

рдЗрд╕ рдмрд╛рд░, рдЪрд▓реЛ рдЗрди-рдЧреЗрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

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

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

рд╣рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?


рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдореЗрдВ, рд╣рдореЗрдВ рдХрдИ рддрд░рд╣ рдХреЗ рдкрдЯрдХрдерд╛ рд╡рд╛рд▓реЗ рджреГрд╢реНрдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдирд╛ рд╣реЛрдЧрд╛ред

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

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

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдРрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрд░ рдХрд░рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдХреНрдпреЛрдВ рд▓реБрдЖ?


рджрд░рдЕрд╕рд▓, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЦреБрдж рдХреА рд╕рд╛рдЗрдХрд┐рд▓ рдФрд░ рд▓реБрдЖ рдХреЗ рдмреАрдЪ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛ред

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

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

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

рддреЛ, рдлрд┐рд░ рд╕реЗ, - рдпрд╣ рджреВрд╕рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдПрдХрддрд╛ рдореЗрдВ рдПрдХрддрд╛


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

рдФрд░ рд╣рдо рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬреЛ рд╣рд░ рдЬрдЧрд╣ (рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ) рд╕рдорд░реНрдерд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдЕрдзрд┐рдорд╛рдирддрдГ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрдЧрд╛, рдФрд░ рдПрдХ рдмрдВрдж рдбреАрдПрд▓рдПрд▓ рдореЗрдВ рдирд╣реАрдВред

рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдлрд╡рд╛рд╣ рдХреЗ рдХрд╛рд░рдг, рд╣рдореЗрдВ рдЪреАрдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ - рдпреВрдиреАрд▓реБрдЖ рдХрд╛ рдПрдХ рдореБрдлреНрдд рдирд┐рд░реНрдорд╛рдг рдорд┐рд▓рд╛ред рд╣рд░ рдЬрдЧрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдбреЙрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЕрд▓реНрдк рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЪреАрдиреА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред

рдУрд╣ рдареАрдХ рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрд░реЛрдд рд╣реИ! рдФрд░ рдорд╕реНрддрд┐рд╖реНрдХ ... =) рдбрд╛рдЙрдирд▓реЛрдб, UniLua рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рдбреНрд░реЙрдк рдХрд░реЗрдВ (рддрд╛рдХрд┐ рд╣рд░ рдмрд╛рд░ recompiled рди рд╣реЛ) рдФрд░ рдЬрд╛рдПрдВред

C # рд╕реЗ Lua рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реИ:
using UniLua; private ILuaState _lua; //        Lua private ThreadStatus _status; //       ... _lua = LuaAPI.NewState(); //  string lua_script = ""; //      Lua _status = _lua.L_LoadString(lua_script); //   if (_status != ThreadStatus.LUA_OK) { Debug.LogError("Error parsing lua code"); } _status.Call(0, 0); //  Lua- 

рдЖрдк рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рд╢рд╛рдк рдирд╣реАрдВ рджрд┐рдпрд╛, рддреЛ рд╕рдм рдареАрдХ рд╣реИред рдПрдХ рдЦрд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдлрд▓ рд╣реБрдИред

рд▓реБрдЖ рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ # рдХрд╛рд░реНрдп


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

рдЖрдЗрдП рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВ рдЬреЛ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд┐рдЦрддрд╛ рд╣реИ:
 private int L_Trace(ILuaState s) { Debug.Log("Lua trace: " + s.L_CheckString(1)); //    return 1; //   } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ ILuaState рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╕рднреА рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рд╣рдо рд▓реБрдЖ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╡рд╣рд╛рдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ! рд▓реБрдЖ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо return рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди s.PushInteger() , s.PushString() , рдЖрджрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рд╣реИред рдЕрдм рдЖрдкрдХреЛ рдЗрд╕реЗ рд▓реБрдЖ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  private int OpenLib(ILuaState lua) { var define = new NameFuncPair[] // ,     ( Lua -> C#) { new NameFuncPair("trace", L_Trace), }; lua.L_NewLib(define); return 1; } 

рдЕрдЧрд▓рд╛, _lua рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рд╡рд░рдг рд╕реЗ рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
 _lua.L_OpenLibs(); _lua.L_RequireF("mylib", OpenLib, true); 

рд╣реЛ рдЧрдпрд╛! рдЕрдм рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 string lua_script = @" local lib = require ""mylib"" lib.trace(""Test output"") "; 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рдм? рд▓реЗрдХрд┐рди рдирд╣реАрдВред рдЕрдм рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдЙрдкрдЬ


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

рдпрд╣ рдпрд╣рд╛рдВ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрдИ рдкреНрд░рддрд┐рдпрд╛рдВ рддреЛрдбрд╝ рджреАрдВред рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ рдХрд╛ рдПрдХ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╡рд░реНрдгрди рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдерд╛ (рдФрд░ рдпрд╣ рдПрдХ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдерд╛)ред

рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рд╡реЛ рд╣реЛрдЧреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдХреЗ рдЬрд╝рд░рд┐рдП рдЪрд▓рд╛рдирд╛:
 //_status.Call(0, 0);     .   : _thread = _lua.NewThread(); _status = _thread.L_LoadString(lua_script); _thread.Resume(null, 0); 

рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ C # рдореЗрдВ рд╣рдордиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ "рдПрдиреАрдореЗрд╢рди рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ" ( L_WaitForAnimationStop ) L_WaitForAnimationStop , рдЬрд┐рд╕реЗ рд╣рдо рд▓реБрдЖ рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдореЗрдВ рдЗрд╕ рдПрдиреАрдореЗрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рд▓рдЯрдХрд╛ рджреЗрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд - рдмрджрд▓реЗ return 1 рдмрдЬрд╛рдп return 1 рд╣рдореЗрдВ рдпрд╣ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
  private int L_WaitForAnimationStop(ILuaState s) { //    callback'  .. _temp_state = s; //  ILuaState     return s.YieldK(s.GetTop(), 0, null); //  Lua,       } 

рдФрд░ рд╕реАрдзреЗ рдХреЙрд▓рдмреИрдХ рдореЗрдВ, рд╣рдореЗрдВ рдЙрд╕ рд╕реНрдерд╛рди рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рд░реБрдХрд╛ рдерд╛
 if (_temp_state.GetTop() > 0) _thread.Resume(null, 0); 

рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рддрд░рд╣:
 lib.trace("starting") lib.wait_for_animation_stop() lib.trace("stopped") 

lib.wait_for_animation_stop() рдмрд╛рдж lib.wait_for_animation_stop() рдФрд░ рдХреЗрд╡рд▓ рддрдм рд╣реА рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛ рдЬрдм рдЖрдк рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рдЙрдкрд░реЛрдХреНрдд рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЙрд▓рдмреИрдХ рдХреЙрд▓ рдХрд░реЗрдВ, рдЬреЛ Resume() рдХрд░реЗрдЧрд╛ Resume() )ред

рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рд╣реБрдЖ рд╣реИ


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

 local ch1 = CharacterGfx() ch1.create("char_0") local ch2 = CharacterGfx() ch2.create("char_1") ch1.moveto("workout") ch2.moveto("fridge") ch2.wait_move_finish() ch1.wait_move_finish() vh.trace("finished ok") 

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

рдкреНрд░рд▓реЗрдЦрди рд╕реЗ, рдореИрдВ рдХреЗрд╡рд▓ Lua 5.2 рд╕рдВрджрд░реНрдн рдирд┐рдпрдорд╛рд╡рд▓реА рдХреА рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдЗрди рд╕рднреА shamanism рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рд╕рд╛ред

рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рднреА рд▓реЗрдЦ:
  1. рд╡рд┐рдЪрд╛рд░, рджреГрд╖реНрдЯрд┐, рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рд╡рд┐рдХрд▓реНрдк, рдордВрдЪ, рд╡рд┐рддрд░рдг рдореЙрдбрд▓, рдЖрджрд┐ред
  2. CRT / LCD рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдбреНрд╕
  3. рд╣рдо рдПрдХрддрд╛ (UniLua) рдХреЗ рд▓рд┐рдП рдПрдХ рдкрдЯрдХрдерд╛ рднрд╛рд╖рд╛ рдЙрдкрд╡рд╛рд╕
  4. рдкреИрд▓реЗрдЯ рджреНрд╡рд╛рд░рд╛ рдлреАрдХрд╛ рдХреЗ рд▓рд┐рдП рдЫрд╛рдпрд╛ (рдПрдХ рд▓рд╛ NES)
  5. рд╕рдмрдЯреЛрдЯрд▓ (рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк)
  6. рдЖрдЗрдП рдкреАрдЖрд░ рдЗрдВрдбреА рдЧреЗрдореНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ
  7. рдПрдХрддрд╛ рдореЗрдВ 2 рдбреА рдПрдирд┐рдореЗрд╢рди ("рдлреНрд▓реИрд╢ рдХреА рддрд░рд╣")
  8. рдПрдХрддрд╛ (рдХрдЯрдХ) рдореЗрдВ рдХрдЯ рджреГрд╢реНрдпреЛрдВ рдХреА рджреГрд╢реНрдп рдкрдЯрдХрдерд╛

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


All Articles