Unity2019.4.6f1 InputSystem1.0.0
InputSystemサンプルのCustom compositeを使ったactionMapを作ります。そして起動シーンでそのアクションマップを登録するとこのエラーが発生します。
PlayerInput, InputSystemUIInputModuleなどですね。
原因
[RuntimeInitializeOnLoadMethod]
private static void Initialize()
{
InputSystem.RegisterBindingComposite<Vector2WithOneModifier>();
}
サンプルではこのように自作compositeを登録してます。そして登録されたcompositeはInputSystemUIInputModule.OnEnableで使われます。
しかしRuntimeInitializeOnLoadMethod attributeは実はOnEnableの後で呼ばれます!! そしてエラーになるわけです。
対策
https://forum.unity.com/threads/custom-composite-binding-in-package-breaks-test-in-the-project-that-uses-it.859699/
テラシュールブログやforumでも書かれてますが
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void Initialize()
{
InputSystem.RegisterBindingComposite<Vector2WithOneModifier>();
}
OnEnableより前に呼ばれるようにしてやります。
まぁこれサンプルが悪いっていう話なんですが…