Unity Collider 按钮在 Android 上不起作用

Unity Collider Button is not working on Android

我有一个碰撞器按钮的问题:当我在 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;  
}

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

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

那里的答案已经过时 link(并且包含错​​字),这里是它应该指向的地方:

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 脚本将再次开始工作。