## 文档
> 准确的说,我并没有写文档的打算。**文档的话直接去类里查看,类中基本上都有详尽的说明,实在不明白,可以加Q群问我530683714。没错我就是群主**,我知道前提是你必须理解什么是类,什么是成员属性,什么是成员方法,什么是静态方法,什么public什么是private。
> 没关系,这些东西慢慢会了解,随便百度都能找得到。
> 去写这些说明并不是MEA方块类的初衷,它的初衷只是帮助你处理复杂的物理运算,帮助你避免踩坑,仅此而已。
关于方块类的用法,经过了一段时间,多个脚本的开发测试,结论是肯定的。
MEA方块类确实能大大提高开发效率。
为什么建议用MEA方块类而不是直接使用K社的API呢?
1. K社的API说明不全,很多接口只能凭猜测和测试才知道它是干么用的。例如:K社的转子有两个属性,从名字上能看出一个是转子的当前角度UpperLimitRad(弧度制),另一个是转子的当前角度UpperLimitDeg(角度制)。如下图:

然而当你去用的时候,你会有一种吃了屎的感觉。UpperLimitRad和UpperLimitDeg其实都是弧度。这种坑,踩了半天才知道为什么。而使用MEA方块类,至少不会给你留这种坑让你去踩。
2. K社的API不定期的修改或废弃,比如推进器。之前的推进器接口是这样的:

可以看到,并没有设置当前推力的方法,所以所有的脚本都是通过它继承IMyTerminalBlock中的一个叫 SetValueFloat("name", value);的方法来设置出力。当时这个方法设置的出力,是百分比制,也就是100为100%出力,和K表中的滑块一致。
而后来某一天,突然把接口改成了这样:

新增了两个设置推进器出力的可写属性。看名字就知道一个是设置推力(牛顿),另一个是设置推力(百分比)。增加API是好事,但是之前的SetValueFloat("name", value);方法,也被K社悄悄的修改了。这个方法之前所有的推进器相关脚本都在用,都是按照百分比在使用,而更新以后突然变成了牛顿为单位,这导致了什么?
这造成之前所有推进器相关的脚本,一夜之间最大推力只有100N,好多玩家过来问我?为什么自动采矿的脚本飞不动了?为什么无人机的脚本飞不动了?为什么导弹飞不动了?
如果使用MEA方块类,至少当K社出现类似的问题的时候,我们可以通过更新一下方块类中的某一行代码,来让方块类的属性或方法保持与原来一直,这种向后兼容的思路,是任何程序设计者都应该考虑的。K社你们的基本节操呢?
3. K社的API很多方法并不容易写,也不容易算。例如获取方块的开关状态,需要走GetValueBool("OnOff");而没有特定的属性直接获取,这样一方面增加了获取的代码量,另一方面对于API不熟悉的玩家,他们就算C#写得再6,也找不到方法去获取一个方块的开关状态。再例如摄像头锁定目标,API如下:

摄像头激光返回一个目标对象,来看看碰撞点 HitPosition 的类型,Vector3D?,这特码是个什么类型???世界坐标系里全是Vector3D,这里突然来个Vector3D?,这让玩家怎么去转换?再看看目标速度,Vector3,这特码又是什么类型?
所以在MEA方块类里,基于我之前编写脚本的经验,对这些奇怪的东西,都做了处理,统一了变量类型。
- 序言
- 写在前面的话
- 太空工程师
- 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