Skip to content

关于C#Light中的一些基本概念

lightszero edited this page Dec 11, 2014 · 2 revisions

C#Light 不是C#,有一些设计和c#不一样。 C#只有编写类型,按项目编译执行这一条路 而C#Light有表达式,单文件,项目三种处理方式

env 脚本环境的简称

core ver C#Light核心的版本,根据此版本来区分修改了些什么

TokenParser 词法处理器,用来把字符串处理成Token List

由于这个过程较慢,专门独立出来,方便优化,TokenList可以存起来,不用每次都从字符串TokenParser而来。

Expr_Compiler 表达式编译,将一段TokenList编译成一个表达式

如果你知道 js.eval() lua.dostring()表达式编译就是和他们类似的机制 "Debug.Log(i);"这种字符串可以直接执行

File_Compiler 文件编译,将一段TokenList(由cs而来)编译为类型

Proj_Compiler 项目编译,将数段TokenList(由cs而来)关联编译为多个类型

Content脚本执行上下文,你可以理解为栈,lua_state一类东西

当脚本出错,content.dumpstack 可以dump出栈调用顺序 content.dumpvalue 可以dump出栈上的变量。

因为出错就不走了,停在执行到的状态

交互方法:

1.脚本调用程序,注册类型后直接使用对应类型

传递实例可以用静态,可以new。也可以有程序调用脚本时作为参数传入

表达式执行方式,可以直接为content设定一个变量

2.程序调用脚本

可以采取表达式执行方式,windows 下有两组用例 一组cslighttestor测表达式方式的脚本 一组cseviltestor测项目和类型方式的脚本

或者编译为类型之后,就通过env.GetType()获取那个类型,然后可以调用了。

参照程序调用脚本一节。

Clone this wiki locally