節電鯖民の遊び場

Memo

最終更新:

sdust

- view
メンバー限定 登録/ログイン
メモ書き

SubtypeIdについて


同じような機能のブロックだとInterfaceが同じ場合がある。
例)Oxygen TankとHydrogen Tank
大きさが違うだけのブロックでもそういうことがある。
Large Ship用とSmall Ship用みたいな

ブロックのListを取得するとき、Interfaceでフィルタをかけてるので、たとえばIMyOxygenTankで
取得すると
大型船・ステーション用Oxygen Tank、小型船用Oxygen Tank、大型船・ステーション用Hydrogen Tank、小型船用Hydrogen Tank
が混ざって取得されてしまう。

こんなときはSubtypeIdをつかって判別する。

   var blocks = new List<IMyTerminalBlock>();
   GridTerminalSystem.GetBlocksOfType<IMyOxygenTank>(blocks);
   string subtype = (blocks[0] as IMyOxygenTank).BlockDefinition.SubtypeId;

これでsubtypeにSubtypeIdが取得できる。各ブロックの定義はCubeBlocks.sbcにあるっぽい。

大型船用 酸素タンク : SubtypeId = ""
小型船用 酸素タンク : SubtypeId = "OxygenTankSmall"
大型船用 水素タンク : SubtypeId = "LargeHydrogenTank"
小型船用 水素タンク : SubtypeId = "SmallHydrogenTank"

あとは自分で調べてね

なお、アイテムにもSubtypeIdがあるよ。

aa

ウィキ募集バナー