.NET рдореЗрдВ Lua рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ LuaInterface рдХреЗ рд╕рд╛рде

рд╣рд╛рдп, рд╣рдмреНрдмрд░!

рдпрд╣ рдЫреЛрдЯрд╛ рдкрдж рддрдм рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ рдЬрдм рдореИрдВрдиреЗ C # (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп .NET рднрд╛рд╖рд╛ рдореЗрдВ) рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ Lua рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред LuaInterface рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдореИрдВ C ++ рдореЗрдВ lua.h рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдерд╛

рдЫрд╡рд┐

рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЬрд╛рдирдирд╛ рд╣реИ


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

рд╢реБрд░реБрдЖрдд



рд╕реВрддреНрд░ (рд╕рднреА dlls рдХреЗ рд╕рд╛рде, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ

рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ LuaInterface.dll рдХреЛ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдмрд╕ .dll рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдореИрдиреБрдЕрд▓ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП luanet.dll рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдЫреЛрдЯрд╛ рд╕рд╛ рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо

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

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

рд▓реЗрдХрд┐рди рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рдКрдкрд░ рдПрдХ рдХрдЯ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред

рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рдирд╛

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

рдРрд╕реА рд╣реА рдПрдХ рдкрдЯрдХрдерд╛ рднрд╛рд╖рд╛ рд▓реБрдЖ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ LuaInterface рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЪрд▓реЛ рдХреЛрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ!

LuaInterface - рдореВрд▓ рдмрд╛рддреЗрдВ


рд╣рдо рдореВрд▓ рд░реВрдк рд╕реЗ .cs рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
using LuaInterface; 


рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рд▓реВрдЖ рд╣реИред

 Lua lua = new Lua(); 


рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдШреЛрд╖рдгрд╛


рдЖрдк рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
 lua[] = ; 

 lua["version"] = 0.1; lua["name"] = "YourName"; lua["test"] = 200; lua["color"] = new Color(); lua["my"] = this; 

рдореВрд▓реНрдп рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХ рд╕рдВрдЦреНрдпрд╛, рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдПрдВ (рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ)

рдлрд╝реАрдЪрд░ рдкрдВрдЬреАрдХрд░рдг


Lua рдореЗрдВ, рдЖрдк C # рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
 lua.RegisterFunction(   Lua, this, ); 

 lua.RegisterFunction("puts", this, typeof(Program).GetMethod("Test")); 


рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдкрдВрдЬреАрдХрд░рдг


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

C #
  class LuaDebug { //       private void Print(string message, ConsoleColor color) { Console.ForegroundColor = color; Console.WriteLine(message); } public void Log(string message) { Print("Log: " + message, ConsoleColor.White); } public void Warning(string message) { Print("Warning: " + message, ConsoleColor.Yellow); } public void Error(string message) { Print("Error: " + message, ConsoleColor.Red); } public string ConsoleRead() { return Console.ReadLine(); } } // ... lua["Debug"] = new LuaDebug(); 


рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд▓реБрдЖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ:
 str = Debug:ConsoleRead() --   Debug:Log(" ") Debug:Warning(" : " .. str) Debug:Log(" !") Debug:ConsoleRead() --  


рд▓реБрдЖ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди


Lua рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ (рд╕рднреА рдкрдВрдЬреАрдХреГрдд рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде)
рдкрд╣рд▓рд╛ C # рд╕реЗ рд╕реАрдзрд╛ рд╣реИ
 lua.DoString() 

 lua.DoString("Debug:Log('Hello, Habr!')" + "\n" + "Debug:ConsoleRead()"); 

рджреВрд╕рд░рд╛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╣реИ
 lua.DoFile(file) 

 lua.DoFile("script.lua") 

(рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╡рд╕реНрддреБ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддреА рд╣реИрдВ] - рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд▓реБрдЖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рджреЗрддрд╛ рд╣реИ)

рдЕрдкрд╡рд╛рдж рд╕рдВрднрд╛рд▓рдирд╛


рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ, LuaException рдЗрд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

  try { // Lua, lua, lua } catch (LuaException err) { //   } 


рд▓реБрдЖ рд╕реЗ рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЗ


рд▓реБрдЖ рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ, рд╡рд┐рдзрд┐ рд▓рд╛рдиреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг
 lua.DoFile("file.lua") LuaFunction func = lua["func"] as LuaFunction; // function func() {...} end func.Call(); 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ Call (params object [] args) рдореЗрдВ рдЖрдк рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдлрдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдорд╛рди рдлрд╝рд┐рдВрдЯ рднреА рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ LuaFunction рдХреЗ рдмрдЬрд╛рдп рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЗрдВрдЯ, рдбрдмрд▓ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА




рдЫрд╡рд┐
рд▓реБрдЖ рдХреЗ рдкреНрд░рддреАрдХ

рдЫрд╡рд┐
рд▓рд╡ 2 рдбреА - рд▓реБрдЖ рдкрд░ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ

рдЫрд╡рд┐
рд▓реБрдЖ рдкрд░ Minecraft рдХреЗ рд▓рд┐рдП рдореЙрдб

рдЫрд╡рд┐
https://bitbucket.org/Izaron/luaforhabr/src
рд╕реНрд░реЛрдд рдХреЛрдб

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


All Articles