エディターでの Input System の使用
Unity の以前の Input Manager とは異なり、新しい Input System は EditorWindow コード内からも使用できます。例えば、以下のようにペンの筆圧情報にアクセスできます。
class MyEditorWindow : EditorWindow
{
public void OnGUI()
{
var pen = Pen.current;
if (pen != null)
{
var position = pen.position.ReadValue();
var pressure = pen.pressure.ReadValue();
//...
}
}
}
これは、OnGUI() メソッドから呼び出されるすべてのコードに当てはまります。つまり、プロパティドローワー、インスペクター、その他の同様の場所でも Input System を使用できます。
ノート: Unity は、編集モードでは Actions をサポートしていません。
座標系
EditorWindow コードと UnityEngine.Screen では座標系が異なります。EditorWindow コードの原点は左上にあり、Y は下向きです。UnityEngine.Screen の原点は左下にあり、Y は上向きです。
Input System では、この違いに対応するために、アプリケーションとエディターコードのどちらが呼び出し元であるかに応じて自動的に座標を変換します。つまり、Mouse.current.position.ReadValue() を EditorWindow コード内から呼び出すと、マウス座標はエディター UI 座標 (Y が下向き) で返されます。他の場所のコードから位置を読み取ると、アプリケーションのスクリーン座標 (Y が上向き) で返されます。
この変換は、AutoWindowSpace というエディター固有の Processor によって処理されます。