Skip to content
ScutGame edited this page Jan 16, 2015 · 7 revisions

此章节介绍如何在服务端使用C#脚本

如何搭建服务端项目工程章节介绍中,可以了解到Script目录下包括Model、CsScript、PyScript和LuaScript子级目录;其中Model目录是存Entity实体类,只能由C#脚本编写;其它目录分别对应相应的开发脚本;接下来我们来看看如何使用C#脚本开发。

配置参数

  • Script_IsDebug:True 表示可以调试代码,否则不能调试,发布时为了提高性能,需要将这个调试选项关闭设置为Flase;
  • ScriptRelativePath:表示脚本引擎监控的根目录路径,默认为“Script”,相对当前项目的路径位置;
  • CSharpRootPath:表示监控脚本根目录下的C#脚本子目录,名称为“CsScript”,开发时只能在此目录下增加子目录才有效;
  • ScriptMainClass:表示C#脚本启动入口文件,默认为“MainClass.cs”,分别继承相应基类,配置启用的是Http服务,或者是Socket服务和WebSocket服务;
  • ScriptMainTypeName:表示C#脚本启动入口的类型名(命名空间+类名),默认为“Game.Script.MainClass”,用于实例化对象;
  • Game.Language.TypeName:表示配置本地化语言配置的类型名,用于实例化配置简、繁或英等语言,只能启用其中一种,放在CsScript/Locale目录下;
  • Game.Action.Script.TypeName:表示协议接口分发配置表达式,格式:“Action命名空间+Action{0}”,其中“{0}”表示ActionId变量,根据客户端请求的ActionId分发到具体的Action类中处理,脚本放在CsScript/Action目录下;
  • Game.Remote.Script.TypeName:表示服务器间通讯入口的配置表达式,格式:“Remote命名空间+{0}”,其中“{0}”表示Route变量(string类型),根据客户端请求的Route参数找到相应的脚本类处理,脚本放在CsScript/Remote目录下;
  • ScriptAsmReferences:表示C#脚本需要引用其它DLL组件的配置,多个以‘;’分隔;
  • ScriptSysAsmReferences:表示C#脚本需要引用.NET FRAMEWORK的程序集组件的配置,多个以‘;’分隔;

脚本使用:

  • Scut引擎使用C#编写,目前脚本入口只能使用C#脚本的MainClass。
  • 脚本执行顺序,先Python脚本执行,再Lua脚本,再执行C#脚本。
  • C#脚本不能禁用,Python和Lua脚本可以配置是否禁用,默认禁用。

项目配置

打开GameServer.exe.config配置如下:


<appSettings>
    <add key="Script_IsDebug" value="True" />
    <add key="ScriptRelativePath" value="Script" />
    <add key="CSharpRootPath" value="CsScript" />
    <add key="ScriptMainClass" value="MainClass.cs" />
    <add key="ScriptMainTypeName" value="Game.Script.MainClass" />
    <add key="Game.Language.TypeName" value="GameServer.CsScript.Locale.SimplifiedLanguage" />
    <add key="Game.Action.Script.TypeName" value="GameServer.CsScript.Action.Action{0}" />
    <add key="Game.Remote.Script.TypeName" value="Game.Script.Remote.{0}" />
</appSettings>

Clone this wiki locally