纯 C# 编写,解释执行,语法类似 JS,动态类型,支持闭包,支持热更新,相比 LUA 更精简,不过效率低很多,目前暂时没有发现 BUG,实际游戏运行稳定,没有发现内存泄漏
Github:https://github.com/easily/EasyScript
测试代码:
func calc() { print(2 + 3) print(2 - 3) print(2 * 3) print(2 / 3) } func ctrl() { n = 1 if (n > 0) { print(""n > 0"") } else { print(""n < 0"") } arr = [1,2,3] for (i = 0, arr.count) { print(arr[i]) } foreach (i in arr) { print(i) } } func closure() { n = 100 f = func() { n = n + 1 return n } for (i = 0, 10) { print(f()) } } func main() { print(""hello world!"") calc() ctrl() closure() } main()
输出:
hello world! 5 -1 6 0.6666667 n > 0 1 2 3 1 2 3 101 102 103 104 105 106 107 108 109 110
纯代码逻辑效率是 C# 的 1 / 50,包含一定的反射大概是 1 / 80,纯数学运算是 1 / 150,纯数学运算有比较多的堆内存分配,会偏慢
所以最好用在对效率要求不高,但需要比较需要灵活性的地方,还在持续的优化性能
目前已经在实际生产环境使用,我们游戏的技能系统的每一个技能脚本都是用 ES 写的,由策划编写,由于语法简单,可以很快学会
编译原理的东西学得不好,很多功能是硬堆出来的,但功能是完善的,同时也在补编译原理方面的知识,希望后期能更加优化
如果有小伙伴想使用的话,希望发现问题可以及时联系我,谢谢