Warning: Declaration of action_plugin_linebreak::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /home/stepism/www/ue4/wiki/lib/plugins/linebreak/action.php on line 41

Warning: Declaration of action_plugin_markdownextra::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /home/stepism/www/ue4/wiki/lib/plugins/markdownextra/action.php on line 16

Warning: Declaration of action_plugin_syntaxhighlighter3_action::register(Doku_Event_Handler &$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /home/stepism/www/ue4/wiki/lib/plugins/syntaxhighlighter3/action/action.php on line 28
097 uGUIのボタンとGameObjectが重なっている時のタッチ判定について [stepism@UE4メモ]

ユーザ用ツール

サイト用ツール


wiki:unity:tips:097

以前のリビジョンの文書です —-


Warning: Declaration of syntax_plugin_linebreak::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/stepism/www/ue4/wiki/lib/plugins/linebreak/syntax.php on line 52

Warning: Declaration of syntax_plugin_linebreak::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/stepism/www/ue4/wiki/lib/plugins/linebreak/syntax.php on line 74

Warning: Declaration of syntax_plugin_markdownextra::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/stepism/www/ue4/wiki/lib/plugins/markdownextra/syntax.php on line 38

Warning: Declaration of syntax_plugin_markdownextra::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/stepism/www/ue4/wiki/lib/plugins/markdownextra/syntax.php on line 47

Warning: Declaration of syntax_plugin_syntaxhighlighter3_syntax::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/stepism/www/ue4/wiki/lib/plugins/syntaxhighlighter3/syntax/syntax.php on line 53

Warning: Declaration of syntax_plugin_syntaxhighlighter3_syntax::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/stepism/www/ue4/wiki/lib/plugins/syntaxhighlighter3/syntax/syntax.php on line 82

097 uGUIのボタンとGameObjectが重なっている時にGameObjectのタッチを無視する

uGUIのボタンとSprite等のGameObjectが重なっている時、両方タッチに反応してしまうのは都合が悪いので、
uGUIのUIオブジェクトが何かしら重なっている時は、その他のタッチ処理を無効にして通らない様にします。
基本的には、EventSystem.current.IsPointerOverGameObject()を使えば良いです。

using UnityEngine.EventSystems; 
 
//------------------------------------------------------------- 
// EventSystemのGameObjectにマウスオーバーしているか? 
//------------------------------------------------------------- 
public bool IsPointerOverGameObject() 
{ 
    EventSystem current = EventSystem.current; 
    if (current != null) 
    { 
        if (current.IsPointerOverGameObject()) 
        { 
            return true; 
        } 
 
        foreach (Touch t in Input.touches) 
        { 
            if (current.IsPointerOverGameObject(t.fingerId)) 
            { 
                return true; 
            } 
        } 
    } 
    return false; 
} 

使い方はシンプルに

//------------------------------------------------------------- 
//! タッチしたか. 
//------------------------------------------------------------- 
public bool IsTouchPress() 
{ 
    if (Input.GetMouseButtonDown(0)) 
    { 
        if (!IsPointerOverGameObject()) 
        { 
        	return true; 
        } 
    } 
    return false; 
} 

こんな感じでタッチ処理をラップしてIsTouchPressを使う様にしてあげれば良いです。

wiki/unity/tips/097.1423005143.txt.gz · 最終更新: 2015/02/03 23:12 by step