## 前言
> K社在很久之前,在Github上发布过一个编程块的API源代码,可以理解为编程块操控方块的API文档。
> 然而它最新的更新日期是2年前,这期间API一直在变化,甚至出现过修改重要API导致大批推进器相关脚本失效的问题。
> 我组的笑笑同学一直通过反编译的方式直接从游戏文件中获取最新的API文档,有兴趣的同学可以参考
> [MEA笑笑的编程块API](https://gitee.com/zzc1996/space-engineers-api/tree/master/SE-2/Sandbox.Common/Sandbox/ModAPI/Ingame)
正是因为这样的情况,加之游戏中的方块API确实不太友好,因此我决定对原有的API进行修饰,创造一套新的方块控制规则,通过类来对方块的属性和方法进行二次封装。
<br>
## 说明
方块类是我自己定义的很多个类的统称。
它们之间可能存在依赖关系或继承关系。
考虑到编程块中代码字数有限,我没有把所有方块的类统一封装到一个大类中,而是独立地存在。
它的结构类似于,有一个Block基类,它有所有IMyTerminalBlock类型方块的方法和属性
有一个Rotor类,它继承了Block类,同样拥有Block类的方法和属性,但同时也有自己的拓展方法和属性
这个思路和K社在设计类时的做法是保持一致的。
这样做的好处是,当你的脚本需要控制哪些方块,就可以独立的引入哪些方块类,不需要的就不用引入。
## 快速上手
1. 首先把方块类的核心代码复制到你的编程块中,检查是否能通过编译(可能因版本问题导致无法通过编译,请使用最新版本,我组会持续维护和更新)。如果能通过编译,进行下一步
2. 将核心代码完整的复制到你的代码最底部
3. 在你的代码中写:
```
void Main(){
LCD lcd = new LCD(GridTerminalSystem.GetBlockWithName("LCD")); //获取一个LCD方块,直接传入LCD类的构造方法,实例化一个LCD出来。
lcd.ShowText = true; //设置LCD的【显示文本到屏幕】选项为开启(因为默认是关闭的)
lcd.Text = "哈哈"; //设置LCD的文字内容为“哈哈”
}
```
4. 安装一个LCD,将名字改为 LCD
5. 复制代码到编程块中,点击运行
6. LCD屏幕上会显示 哈哈 两个字
<br>
再来举一个动态的例子
1. 首先把方块类的核心代码复制到你的编程块中,检查是否能通过编译(可能因版本问题导致无法通过编译,请使用最新版本,我组会持续维护和更新)。如果能通过编译,进行下一步
2. 将核心代码完整的复制到你的代码最底部
3. 在你的代码中写:
```
void Main(){
Rotor rt = new Rotor(GridTerminalSystem.GetBlockWithName("Rotor")); //获取一个转子方块,直接传入Rotor类的构造方法,实例化一个转子出来。
rt.TurnTo(90); //让转子转到90度位置
}
//这是设置编程块自动循环运行,频率为每秒60次
Program(){
Runtime.UpdateFrequency = UpdateFrequency.Update1;
}
```
4. 安装一个转子,将名字改为 Rotor
5. 复制代码到编程块中,点击运行
6. 转子会转到90度并停止
- 序言
- 写在前面的话
- 太空工程师
- MEA小组
- 一、入门
- 1.1 基础概念
- 1.2 编程工具
- 1.3 变量
- 1.4 函数 Function
- 1.5 基本语法
- 1.5.1 运算符
- 1.5.2 if
- 1.5.3 for
- 1.5.4 其他语法
- 1.3 类 Class
- 二、编程块
- 2.1 方块的概念
- 2.2 List<T>结构
- 2.3 获取方块
- 2.4 方块的使用
- 三、Ship 类
- 3.1 简介
- Ship v0.5
- 代码
- 手册(待更新)
- 例子(待更新)
- Ship v1.0
- 代码
- 例子
- 文档
- 实例化
- 内置变量
- 内置方法
- Target类
- 四、运动控制算法在SE中的应用
- 4.1 运动控制介绍
- 4.2 过程控制
- 4.3 震荡和动态误差
- 4.4 误差累加方案
- 4.5 PID算法
- 4.6 对PID算法的一点点简化
- 4.7 一阶惯性系统的PID算法优化的研究
- 五、MEA方块类
- 5.0 核心代码目录
- v1.0核心代码
- v1.1 核心代码
- v2.0 核心代码
- 5.1 类的概念
- 5.2 MEA的方块类(Block)
- 5.3 方块类文档
- 5.4 方块类2.0 全教程
- 5.4.1 安装和使用
- 5.4.2 方块类(Block)
- 5.4.3 显示屏类(DisplayScreen)
- 5.4.4 LCD类(LCD)
- 5.4.5 主控座椅类(Cockpit)
- 六、疯猴的编程笔记
- 第一个程序
- 获取和控制其他块
- 物流与生产
- 界面与通信
- 运动与姿态
- 侦测与导航
- 七、SteamZhou的笔记
- 有趣而花里胡哨的IDEA
- 八、质子对撞炮的笔记
- 属性 Property
- 接口 interface