# CSExtensionForLua **Repository Path**: asihhz3/csextension-for-lua ## Basic Information - **Project Name**: CSExtensionForLua - **Description**: 对KeraLua的简单封装,个人使用。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-01 - **Last Updated**: 2026-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Csharp extension For Lua ## 介绍 一个对KeraLua进行简单封装,可以在Csharp上运行lua代码的库。 主要为我的另一个游戏项目服务。 不建议其他人使用该库(因为很烂) KeraLua : [github](https://github.com/NLua/KeraLua) ## 如果你一定要用这个库,或者在使用该库的另一个项目发现时bug 那就看源码吧,一看一个不吱声0o0 使用库的示例代码: program.cs: ```csharp using Ex; public class Program { public class Player { public int health = 8; } public static void Main(string[] args) { ExtensionMain main = new(); main.Do( env => { ExCsData.AddField( "health", obj => obj.health, (obj, a) => obj.health = Convert.ToInt32(a), UsableLuaType.number ); ExCsData.InitMetatable(env); env.global.Set("num", 23); env.global.Set("str", "hello"); env.global.Set("bool", true); var table = new ExRefTable(env); table.Set("a", 5); env.global.Set("table", table); var func = new ExCsFunction( env, "func", param => { return new IndefiniteVarType(2, "baby"); }, Array.Empty() ); env.global.Set("func", func); var player = new Player(); env.global.Set("player", new ExCsData(env, player)); Console.WriteLine("[cs side]test.lua start"); env.RunFile("test.lua"); Console.WriteLine("[cs side]test.lua end"); var lua_func = (IExLuaFunction)table.Get("lua_func"); var result = lua_func.Call(1, 12, 15); Console.WriteLine($"[cs side]lua_func(12, 15):\t{result.GetDouble(0)}"); } ); } } ``` test.lua: ```lua print("[lua side]num:", num); print("[lua side]str:", str); print("[lua side]bool:", bool); print("[lua side]table:", table); print("[lua side]table.a:", table.a); print("[lua side]func:", func); print("[lua side]func():", func()); print("[lua side]player:", player); print("[lua side]player.health:", player.health); function table.lua_func(a, b) print("[lua side] lua_func running QwQ") return a + b; end ``` output: ``` [cs side]test.lua start [lua side]num: 23 [lua side]str: hello [lua side]bool: true [lua side]table: table: 0000020D7E9AF250 [lua side]table.a: 5 [lua side]func: function: 00007FFD06B93264 [lua side]func(): 2 baby [lua side]player: Program+Player [lua side]player.health: 8 [cs side]test.lua end [lua side] lua_func running QwQ [cs side]lua_func(12, 15): 27 ```