将按钮组件添加到统一2d移动版中的2d精灵中

时间:2018-08-26 13:37:35

标签: unity3d

我想在统一移动设备中选择精灵。因此,我认为一种方法是将按钮组件添加到Sprite,但是当我这样做时,它不起作用。

我对普通按钮做了同样的事情,在单击功能和按钮上添加了脚本。但是不能在Sprite中做同样的事情。

我想念什么吗?

如果有人知道在手机中选择游戏对象的另一种更好方法,请告诉 例如,我想通过单击来升级游戏对象。

like this

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全了解您的目标,但是如果您只是想检测用户是否在移动设备上单击了游戏对象,可以使用Input.touches

void Update()
{
    for (int i = 0; i < Input.touchCount; i++)
    {
        if (Input.GetTouch(i).phase == TouchPhase.Began)
        {
            Vector3 p = Camera.main.ScreenToWorldPoint(Input.GetTouch(i).position);

            int layerMask = 1 << objectLayer;
            Ray ray = new Ray(p, Vector3.forward * distance);
            RaycastHit2D hit = Physics2D.GetRayIntersection(ray, distance, layerMask);

            if (hit.collider != null)
            {
                YourObject obj = hit.collider.GetComponent<YourObject>();
                if (obj != null)
                {
                    // player clicked on the object
                }
            }
        }
    }
}

我没有测试该代码,但是它应该大致适用于2D,objectLayer是对象层的索引,distance是Raycast应该走多远。

我从来没有为3D做过这样的事情,但我想那会是相似的。