AndroidアプリでTouchイベントが発火しない

Androidアプリ用にShippingでクック&パッケージングして実機にインストールして試してみると、ActorのStaticMeshでTouchイベントが発火しません。EventBeginInputTouch, On Input Touch Begin, InputTouchなどどれもダメでした。

開発版としてクック&パッケージングすると、ちゃんとTouchイベントが発火します。

Widgetのボタンは何もしなくても最初から普通にタッチして押せてました。

一応、PlayerControllerの子クラスを作って、そこのクラスのデフォルトでEnable Touch EventsやEnable Touch Over Eventsにチェックを入れたりして、ちゃんとできてるはずなんですが。

この開発版の時は上手く動いて、シッピング版の時は上手く動かない原因&解決方法をご存じの方がいらっしゃいましたら教えていただけると助かります。宜しくお願いします。

開発版で問題なく、シッピング版でインプットイベントが走らないという場合、
最初に確認したいのが、BeginPlayで、プレイヤーや、コントローラーや、インプットの指定などをしているかどうか。が最初の確認事項になります。

BeginPlay でいろいろ指定している場合、簡易的にDelay を挟むことで動くようなことがあるかもしれません。
(実行順序が重要なものは、BeginPlay を使わない方法を考えた方が良い。)

情報が少ないのであてずっぽうです。違ったらごめんなさい。

参考記事
【UE4】パッケージング後だけ動作がおかしい?!→ BeginPlayの実行順の変化が原因でした

1 Like

ありがとうございます。

まだモバイル用ゲーム開発に不慣れで、昨日までいちいち実機でテストしてたんですが、試しにプロジェクト設定のインプットで「タッチにマウスを使用」にチェックを入れてwindows版をクック&パッケージ化してみたら同じ現象が出ました。

で、よくよく見直してみたらタッチイベントは発火してました。

なぜシッピング版でイベントが発火してないと勘違いしたかというと、タッチされたアクタをそのまま操作できない事情というか仕様にしてて、タッチされたアクタの名前を取得したり、GetAllActorsOfClassで名前からオブジェクトを取得したりしてるせいで、必ず取ってこれるはずだと思い込んでたオブジェクトが取ってこれなくなってアクタのコントロール不能になったせいだと思います。まだ原因を完全に特定したわけじゃないんですけど、おそらく開発版とシッピング版ではUEが付けるオブジェクト名が微妙に違うんじゃないかと思います。ちょっとでも余計な尾ひれが付いてたら、ちゃんと動かないコードと言うかブループリントになってました。

なんかもういろいろと申し訳ございませんでした。

1 Like