如何获取一个GameObject在Android手机屏幕上的矩形位置?

1回答

如何获取一个GameObject在Android手机屏幕上的矩形位置?

提问者 kevindwsun 2016-01-13 422浏览
我们想通过获取GameObject对象在手机屏幕上的矩形位置,然后利用外部的事件模拟做一些类型机器人的测试。

之前都是针对NGUI,Render,Collider还有Mesh分别处理的,使用摄像机,还有一些坐标转换的API换算成屏幕上的矩形位置。感觉效率不高,可能还会有漏,想请教有没有更通用更高效的办法,因为不管3D还是2D最终还是会渲染到屏幕上,成一个2D的图像并显示在屏幕上,谢谢。

问题类型 : 图形渲染     开发平台 : Windows 7     发布平台 : Android     Unity 版本 : Unity Pro     版本号 : 4.3     优先级 :    一般

快来消灭0回答吧

{{ dataList.answer_count | view-format }}回答
  • Unity官方专家 2016-01-13 10:17

    一般来说,目前我们只能通过unity的内置API,如Camera.WorldToScreenPoint,将获取到的GameObject的世界坐标下的位置变换得到屏幕空间坐标。获取世界坐标系下GameObject的位置,通常有两种途径,一种是transform.position,另一种是通过其包围盒以及包围盒中心来获取,例如render.bounds, render.bounds.cneter。相对于第一种方法,通过包围盒来获取的方法通常能获取到更精确的位置,尤其当object时非对称的。 


    针对你们的case, 目前来讲,还没有其他的、unity内置的API和方法可以做到统一的、普适的处理。如果你们一定想设计一个统一的solution,我们建议你们可以考虑下使用screen space驱动的方法,可能要增加一些render pass和shader,大概思想是将所有object渲染到纹理里,在纹理中计算好各个object的边缘顶点(比如UI的button的四个角)的片元位置,然后再计算其对应的屏幕位置。这样,性能恐怕会更低,同时,要增加不少计算量。上述粗略的方案仅供参考,你们可以依据实际应用再进行取舍。

    0评论
  • {{ answer.user.NickName }} {{ answer.profession }} {{ answer.created_at | time-format }}
    专家回答
    {{{ answer.answer }}}
    {{ answer.answer_count | view-format }}评论
加载中... 查看更多回答