ゲーム内プログラミング関連の情報置き場。
未整理
update 1.185時点でのCustomName
従来のブロック名書き込みのSetCustomNameで警告が出る。CustomNameプロパティに直接書き込みできる。
beacons[i].SetCustomName("NoEntry!:"+MaxRange+"m");
これを
beacons[i].CustomName = ("NoEntry!:"+MaxRange+"m");
に修正することで警告がでなくなる。
GetValueFloat()とSetValueFloat()以外
- 公式Steamガイドにはないが、Float型以外も同様に使用できる。
名前 備考 SetValue GetValue GetValueBool SetValueBool
fieldの読み取り
リストに入れたブロックのfieldを読み取りたい場合、for文で「配列名[i]」や、foreachで型名をvarにした場合は「IMyDoor Door = list[i] as IMyDoor;」「IMyDoor Door = obj as IMyDoor;」のように取り出す処理を行わないと読み取れない。
下記の5行目のように、foreachを使用する際に変数の型名をvarにせずインターフェースネームを指定すれば、6行目のif文のようにそのままfieldを読み取ることができる。
public void Main(string argument){ List<IMyTerminalBlock> targets = new List<IMyTerminalBlock> (); GridTerminalSystem.GetBlocksOfType<IMyDoor>(targets);
foreach(IMyDoor obj in targets){ if (obj.Open) { obj.GetActionWithName("Open_Off").Apply(obj); }else{ obj.GetActionWithName("Open_On").Apply(obj); } } }
Air Ventのフィールド
エアロックの制御などで重要になるがガイドにないAir Ventのフィールドについて。
- 部屋が密閉されているか否かは「CanPressurize」
- 減圧モードか否かは「IsDepressurizing」
- 参照:Getting status of air vent?(公式フォーラム)
Custom Dataの読み書き
- 書き込みも可能なフィールドのような扱い。
- フィールド名は「CustomData」
- 読み取り例
public void Main(string argument) { var target = GridTerminalSystem.GetBlockWithName("LCD Panel Test") as IMyTextPanel;
target.WritePublicText(target.CustomData, true); }
- 書き込み例
public void Main(string argument) { var target = GridTerminalSystem.GetBlockWithName("LCD Panel Test") as IMyTextPanel;
target.CustomData = argument; }