GUIElementのクリック判定
GUIElement(GUITexture、GUIText)のクリック判定まとめ!
ただし、GUIElementを使うことはあんまりおすすめしません!!
GUIクラスとGUIElementの比較
GUIElementの基本的なことはReferenceを見ましょう。
注意点は
・座標指定を絶対座標でやるなら→PixelInsertで指定。
・相対座標(ViewPortの座標)でやるなら→Transformで指定。
・Z座標はLocal座標が表示の順番として採用されるので、親子関係が作りづらい。
GUIElementはZ座標に従ってクリック判定をしてくれるので案外便利。
(つまり、重なっている場合上にある方を優先してくれる。)
・GameObject -> Create Other からGUIText、GUITextureをいくつも作る。
・次のスクリプトをカメラ等に追加。
public class GUIDemo : MonoBehaviour { GUILayer guiLayer; void Start() { guiLayer = Camera.main.GetComponent<GUILayer>(); } void Update () { //シーン上の全GUIElementに対して当たり判定 GUIElement hit = guiLayer.HitTest (Input.mousePosition); if (Input.GetMouseButtonDown (0) && hit != null) { //イベント処理 print (hit.name); } } }
こんな感じに書けば前後関係も考慮してくれるので、
ポップアップダイアログなんかも簡単に書けますね!
その他、
・当たり判定から除外したいものは、レイヤーを「Ignore Raycast」にする。
・個別の当たり判定も出来ます→GUIElement.HitTest(Vector3 pos)