以前のリビジョンの文書です
—-
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が重なっている時のタッチ判定について
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を使う様にしてあげれば良いです。