🚀
高性能
字节码编译执行,简单表达式 1.1μs/次,大部分操作零 GC 分配
在 Unity 项目的 Packages/manifest.json 中添加:
{
"dependencies": {
"com.azathrix.mini-panda": "https://github.com/Azathrix/MiniPanda.git"
}
}推荐安装 MiniPanda VSCode 插件,提供:
using Azathrix.MiniPanda;
var vm = new MiniPanda();
vm.Start();
// 执行脚本
vm.Run(@"
var name = ""MiniPanda""
print(""Hello, {name}!"")
");
// 求值表达式
var result = vm.Eval("1 + 2 * 3");
Debug.Log(result.AsNumber()); // 7
// 注册 C# 函数供脚本调用
vm.SetGlobal("heal", NativeFunction.Create((Value amount) => {
return Value.FromNumber(amount.AsNumber() * 2);
}));
vm.Shutdown();// 变量与字符串插值
var name = "MiniPanda"
print("Hello {name}!")
// 函数与 Lambda
func add(a, b = 0) return a + b
var double = (x) => x * 2
// 类与继承
class Entity {
Entity(name) { this.name = name }
}
class Player : Entity {
Player(name, level) {
super.Entity(name)
this.level = level
}
}
// 模块
import "utils" as u
export func helper() { }Unity 6000.3 测试结果:
| 操作 | 性能 | GC 分配 |
|---|---|---|
| Eval 简单表达式 | 1.1μs | 0 |
| Run 编译+执行 | 2μs | 0 |
| 函数调用 | 3.1μs | 0 |
| GetGlobal | 0.1μs | 0 |
| SetGlobal | <0.1μs | 0 |
| 循环 100000 次 | 76ms | 0 |
| 递归 fib(20) | 30ms | 0 |
大部分操作 零 GC 分配,适合游戏热更新场景。