質問: ### 前提・実現したいこと Unity3Dで、Fungusを用いたClickable Spriteの**オブジェクトをクリックしてパネルを画面いっぱいに表示させたい**のですが、ゲームモードで実際にやってみると、オブジェクトどころか**ウィンドウをクリックしたら問答無用でパネルが表示**されてしまいます。 いま現在、ClickableSpriteにはBoxCollider2D(Is Triggerにチェック)、EventTriggerには以下のスクリプトと画面に表示したいPanelをアタッチしたGameObjectを、PointerClick/Editor and RunTime/GameObject.SetActiveでアタッチしてあります(チェックボックスにチェック)。 説明不足、説明下手で至らぬ点ばかりで申し訳ありませんが、何卒よろしくお願い致します。 ### 該当のソースコード ``` using System.Collections; using System.Collections.Generic; using UnityEngine; public class Man : MonoBehaviour { public GameObject Panel; // Use this for initialization void Start () { Panel.SetActive (false); } // Update is called once per frame void Update () { if (Input.GetMouseButtonDown (0)) { Panel.SetActive (true); } if (Input.GetKey (KeyCode.Space)) { Panel.SetActive (false); } } } ``` ### 試したこと GameObjectをClickableSpriteの子オブジェクト化する、ClickableSpriteのHierarchy上の順番を他と入れ替えるなど ### 補足情報(FW/ツールのバージョンなど) unity ver.2017.2.0f3 personal
回答: `if (Input.GetMouseButtonDown (0)) { }`は「マウスのボタン0番(大概は左ボタン)が押されたら」 `if (Input.GetKey (KeyCode.Space)) { }`は「スペースキーが押されている間」 という条件文です。 **それ以外の条件は何一つありません。** どこをクリックしていたらとか、どこのオブジェクトが重なっているとか、一切関係ありません。 入力があるか無いか、だけです。 で、既にオブジェクトにColliderとEventTriggerが入っていて、 シーン上にEventSystemを持つオブジェクトが存在しているなら、 全部EventSystemがやってくれるので上記のコードは多分必要無いです。 Unity(3D・2D) EventSystemでクリックイベントの制御 - Qiita (クリックとは別に、スペースキーで消したいよってことならそっちは維持すべきかとは思いますが)