Unity Collider Button无法在Android上运行

时间:2017-05-25 15:38:50

标签: android button unity3d unityscript collider

我遇到了对撞机按钮的问题:当我在PC上使用按钮时,它工作正常,但是当我在移动设备上使用它时,脚本无效(但对撞机应该会产生淡入淡出效果)。

Video showing desired effect

这是我的脚本:

#pragma strict

function OnMouseDown(){
    GameObject.FindWithTag("MainCamera").GetComponent(orbit).mainMenu = false;  
    for (var child : Transform in GameObject.Find("logo").transform) {
        child.gameObject.active = false;    
    }
    var enemy:GameObject[] = GameObject.FindGameObjectsWithTag("enemy");
    for (var child3 : GameObject in enemy) {
        Destroy(child3);
    }

    for (var child : Transform in GameObject.Find("menu_main").transform) {
        child.gameObject.active = false;    
    }   

    var num:GameObject[] = GameObject.FindGameObjectsWithTag("num");
    for (var child2 : GameObject in num) {
        Destroy(child2);
    }

    for (var child : Transform in GameObject.Find("menu_end").transform) {
        child.gameObject.active = false;    
    }   

    for (var child : Transform in GameObject.Find("healthbar").transform) {
        child.gameObject.active = true; 
    }   
    GameObject.Find("_Game").GetComponent(game).score = 0;  
}

1 个答案:

答案 0 :(得分:2)

所以你的问题归结为非常简单的事情。虽然触摸事件与鼠标事件类似,但在很多方面它们的处理方式相同,但这是其中之一,而不是。

简单地说,OnMouseDown doesn't work on mobile

那里的答案有一个过时的链接(并包含一个拼写错误),这里应该指出:

http://wiki.unity3d.com/index.php/OnMouseDown

相关代码(在你正在使用的JS / UnityScript中,虽然我建议切换到C#,它相对无痛):

function Update () {
    // Code for OnMouseDown in the iPhone. Unquote to test.
    var hit : RaycastHit;
    for (var i = 0; i < Input.touchCount; ++i) {
        if (Input.GetTouch(i).phase == TouchPhase.Began) {
        // Construct a ray from the current touch coordinates
        var ray = camera.ScreenPointToRay (Input.GetTouch(i).position);
        if (Physics.Raycast (ray,hit)) {
            hit.transform.gameObject.SendMessage("OnMouseDown");
          }
       }
   }
}

只需将带有此功能的新脚本附加到主摄像头中,您就可以了。您现有的OnMouseDown脚本将重新开始工作。