请问在Unity中,将UI放入3D场景后,如何判断点击事件

如题,谢谢谷主
已邀请:

谷主

赞同来自:

教程 输入处理。

Amoe

赞同来自:

谷主你好,输入处理我看了还是不太明白,我把鼠标指向3D场景中的UI组件时Stage.isTouchOnUI返回是false,打印FairyGUI.GRoot.inst.touchTarget时输出Null,指向正交相机时则是true和相应的UI组件,说明没检测到,使用UIPanel.SetHitTestMode设置为Raycost也不行

谷主

赞同来自:

false说明就是没有UI,或者UI 的触摸设置是false,自己仔细检查就是了。

Amoe

赞同来自:

是这样的,我们并没有使用UIPanel,而是直接将从代码创建的GComponent放在了3D世界内,这样就无法被检测到点击事件了,如果直接用Raycast的话只能获取到GameObject,请问谷主有GameObject到DisplayObject的转换方法吗

谷主

赞同来自:

我还是那句话,无论uipanel还是动态创建,不需要用什么raycast,不可能检测不到UI的点击事件。

Amoe

赞同来自:

你不信你可以自己去试,用 
var ui = UIPackage.CreateObject("HeadBar", "HeadBar")
GRoot.inst.AddChild(ui);
创建一个对象,用一个3D相机照他着他 然后点 FairyGUI.GRoot.inst.touchTarget始终是Null

谷主

赞同来自:

加到groot又用3d相机照,能检测到才怪。

Amoe

赞同来自:

那请问应该怎么操作 谢谢谷主

Amoe

赞同来自:

我加到Stage并且把DisplayObject强转成Container然后把RenderMode设置成WorldSpace就可以,请问这样的做法对吗

谷主

赞同来自:

3D UI要用UIPanel。UIPanel也可以动态创建,详见教程。

要回复问题请先登录注册