Skip to content

zh_CN_使用C#脚本开发拓展

Shunhong Zhang edited this page Aug 5, 2018 · 12 revisions

此页面已过期,秋之盒不再对此技术提供支持

是的,你没听错,就是C#的脚本

此技术的实现基于CSScript

  • 本文档只是教你怎么构建一个脚本,调用秋之盒API请看其它文档

HelloWorld

//Test.cs
using AutumnBox.OpenFramework.Open;
using AutumnBox.OpenFramework.Script;
/*必须编写Main方法,参数必须为ScriptArgs
* 否则此脚本将无效
* 请在此方法内完成一切操作,一旦方法结束,则视为脚本执行完毕
*/
public static void Main(ScriptArgs args)
{
    OpenApi.Gui.ShowMessageBox(args.Context,"Hello!","Hello world!");
}

编写"对应方法",完善脚本功能

注意: 所有对应方法都是可选编写的

/*编写此方法,返回的值将会作为脚本名
 *不编写默认为文件名
 */
public static string __Name(){
    return "测试脚本";
}
/*编写此方法,返回的值将会作为脚本名
 *默认为文件名*/
public static string __Auth(){
    return "zsh2401";
}
/*编写此方法,返回的值将会作为脚本版本
 *默认为1.0.0.0*/
public static Version __Version(){
    return new Version(1.0.0.0);
}
//说明
public static string __Desc(){
    return "说明";
}
//联系方式
public static string __ContactInfo(){
    return "zsh2401@163.com";
}
/*需要引用AutumnBox.Basic.Device
 *表明此脚本运行所需设备状态
 *如下表示此脚本需要开机或Fastboot时才可运行*/
public static DeviceState __ReqState(){
    return DeviceState.Poweron | DeviceState.Fastboot;
}
/*此方法将在脚本初始化时调用
* 抛出异常或返回false,此脚本将不会被加载
*/
public static bool InitAndCheck(ScriptInitArgs args){
   return true;
}
/*此方法将在脚本被用户要求停止时调用
* 也就是说,此方法只可能在Main方法后调用
* 如果你没有办法停止Main中的操作,请返回false
* 默认返回false
*/
public static bool OnStop(ScriptStopArgs args){
   return true;
}
/*相当于标准拓展的OnDestory()
* 当脚本被卸载时调用
* 你必须在此方法释放所有调用的资源
*/
public static void SDesotry(ScriptDestoryArgs args){
   return true;
}

注意事项

  • 无法使用C#7及以上版本语法(CSScript的锅)
  • Script*Args都实现了IScriptArgs接口,都有Context Context{get;}IExtensionScript Self{get;}属性

示例: 一键重载所有拓展脚本

using AutumnBox.OpenFramework.Script;
using AutumnBox.OpenFramework.Open;
public static void Main(ScriptArgs args){
    ExtsManager.ReloadAllScripts(args.Context);
    OpenApi.Gui.RefreshExtensionList(args.Context);
}
public static string __Name(){
    return "一键重载所有脚本";
}
public static string __Auth(){
    return "zsh2401@163.com";
}
public static string __Desc(){
    return "Hehe";
}
public static Version __Version(){
    return new Version(2,4,0,1);
}
Clone this wiki locally