質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2909閲覧

【Unity】OnEndDragからOnDropに変数を渡したい

HKaaaaaaaaaa

総合スコア3

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/05/25 03:04

編集2020/05/25 03:06

Unityで開発をしているのですが、OnDropとOnEndDragを使った以下の要件の実現させ方がわからず困っております。

#####実現したい要件
ドラッグして移動可能なオブジェクトAを置いてあるオブジェクトBに重ねたとき、オブジェクトAに付与しているスクリプトA内のOnEndDragで算出した値をオブジェクトBに付与しているスクリプトBのOnDropで使用する。

#####試したこと
スクリプトAにプロパティを設定して、OnEndDragでプロパティの変数に値を代入。
スクリプトBではスクリプトAのプロパティを取得し、変数を持ってこれるかテスト。
⇒結果、変数は持ってこれていませんでした。

OnDropとOnEndDragの実行タイミングの差かと思い、OnDropの起動時に3秒待機ロジックを設定。
⇒同じく、変数は持ってこれていませんでした。

######聞きたいこと
・「試したこと」での方針はそもそもあっているでしょうか?
・実現したい要件を満たせる方法はあるでしょうか?

作っているコードが複雑なため、必要な箇所に絞り込むのに時間がかかりますが、
回答に必須であればコードを貼りますのでご指示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2020/05/25 07:48

「試したこと」の方針でいけなくもないと思いますが、「OnEndDrag時、スクリプトBに作った任意のpublicメソッド呼び出し(その際に引数で値を渡す)」の方がスムーズかと思います(OnDropを使う必要性が現状見当たらない)。 とりあえずOnEndDragが正常に動作しているか、Debug.Log等を用いて確認してみてください。
HKaaaaaaaaaa

2020/05/25 10:40

コメントありがとうございます。 OnEndDragの中で書き換えている変数(スクリプトBに渡したい変数)をDebug.Logで出力したところ更新できているようでしたが、OnDrop側でDebug.Logで変数を出力すると更新できておりませんでした。 OnDropを使っているのはOnDropされたオブジェクトの情報を使いたかったからなのですが、OnEndDragの中でDrag先のオブジェクトBの情報を取得するにはどうすればよいでしょうか? こちらのコードで試したのですが、オブジェクトBの情報が欲しいところ、オブジェクトAの情報を取得してしまいました。(OnBeginDragでブロックレイキャストはオフにしています) KomaController diffender = eventData.pointerDrag.GetComponent<KomaController>();
sakura_hana

2020/05/25 12:52

http://magcat.php.xdomain.jp/brog/?p=195 ここ曰く、オブジェクトの親子(兄弟)関係が関与しているかもしれないのでご確認ください。 それでもOnDropが使用出来ない場合は以下を参考に、RaycastAllでマウスカーソル位置にあるオブジェクト全取得して該当オブジェクトを探すとよいかと思います。 http://negi-lab.blog.jp/DragAndDrop
HKaaaaaaaaaa

2020/05/25 14:03

いろいろ提示いただきありがとうございます。 オブジェクトの親子兄弟関係についてはいじってみたのですが変わらずでした。 「RaycastAllでマウスカーソル位置にあるオブジェクト全取得して該当オブジェクトを探す」方法でうまく要件を満たすことができました。ありがとうございます。 自己解決にするのは気が引けるのでお手数ですが回答のところに転記してもらっても良いでしょうか?
guest

回答1

0

ベストアンサー

EventSystem.RaycastAllでマウスカーソル位置にあるオブジェクトを全取得して該当オブジェクトを探せます。
EventSystems.EventSystem-RaycastAll - Unity スクリプトリファレンス
[UI] ドラッグアンドドロップでUIのイメージを動かす : ねぎたまらぼ

投稿2020/05/26 02:22

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問