前提・実現したいこと
Unity2Dでクリックしたゲームオブジェクトの名称を取得したいです。
発生している問題・エラーメッセージ
「該当のソースコード」に記載のソースコードで一応名称は取得できるのですが、uGUI(ButtonやPanelなど)にしか効かず、Spriteなどその他のオブジェクトにはまったく反応しません。(クリックしてもnullが返ってくる)
▼ItemCoverPanelがPanel。NullとなっているものがSprite
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.EventSystems; 5using UnityEngine.Events; 6 7public class ItemManagement : MonoBehaviour 8{ 9 //クリックしたアイテム 10 string ClickedItem; 11 12 // Start is called before the first frame update 13 void Start() 14 { 15 16 } 17 18 public void selectItem() 19 { 20 //クリックしたオブジェクト名を取得 21 ClickedItem = null; 22 PointerEventData pointer = new PointerEventData(EventSystem.current); 23 pointer.position = Input.mousePosition; 24 List<RaycastResult> result = new List<RaycastResult>(); 25 EventSystem.current.RaycastAll(pointer, result); 26 27 foreach (RaycastResult raycastResult in result) 28 { 29 ClickedItem = raycastResult.gameObject.name; 30 } 31 32 Debug.Log(ClickedItem); 33 } 34 35 // Update is called once per frame 36 void Update() 37 { 38 if (Input.GetMouseButtonDown(0)) 39 { 40 selectItem(); 41 } 42 } 43}
試したこと
- GameObjectにRigidBody2D、BoxCollider2Dのいずれかまたは両方をつけてみる
- GameObjectのポジションを変更する(Raycastが反応するuGUIと同じZ座標、後ろのZ座標、前のZ座標)
1、2いずれの方法でもnullが返ってきてしまいました
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/29 14:48