(UNITY version 2020.3.25f1 Personal)
結論(暫定)
OnMouseDragイベントはuGUIのCanvas内に配置するImageでは使えないっぽいので、
IDragHandlerとOnDragを使用する(これにはBox Collider 2DとRigidbody 2Dは不要)
試したこと
ドラッグしたいオブジェクトにBox Collider 2Dのコンポーネントを追加しサイズ設定、
Rigidbody 2Dのコンポーネントを追加しボディタイプをキネマティック、
完全なキネマティックコンタクトの使用にチェックを入れた
下記のログを吐くだけのスクリプトをオブジェクトにアタッチして実行してみたが動かず
MainCameraのタグ名がMainCameraになっていることや、EventSystemがあること、
レイキャストターゲットにチェックが入っていることも確認したがダメ
using UnityEngine;
using System.Collections;
public class DragTest : MonoBehaviour {
void OnMouseDrag() {
Debug.Log("MouseDrag");
}
}
ドラッグしたいオブジェクトがCanvas Groupだったりプレハブだったり、
別のオブジェクトの下に配置していたり、
Instantiateしたものだったりする部分のやり方が悪いのかと思ったが、
Canvasにテスト用にImageオブジェクトを配置して同様にテストしたら、
それすらも動かなかった
まず一番シンプルな状態で試すべきでしたね…
ではどうするか
パフォーマンス的によく動かすならImageじゃなくてSpriteが良いのかなと思ったが、
アクションが重要なゲームを作っているわけでもないので
ImageのままIDragHandlerとOnDragを使用で実装することにした
canvas groupを使用しているのでそんなにパフォーマンス落ちないんじゃないかな…
と思っているけど、あまりにひどかったら修正します
参考にさせて頂いた記事
他