-
Notifications
You must be signed in to change notification settings - Fork 30
关于C#Light中的一些基本概念
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()获取那个类型,然后可以调用了。
参照程序调用脚本一节。