Unity Collider按钮在Android上不起作用

Unity Collider按钮在Android上不起作用,android,button,unity3d,unityscript,collider,Android,Button,Unity3d,Unityscript,Collider,我对碰撞器按钮有一个问题:当我在PC上使用该按钮时,它工作正常,但当我在移动设备上使用它时,脚本不工作(但碰撞器应该会产生淡入淡出效果) 这是我的脚本: #pragma strict 函数OnMouseDown(){ GameObject.FindWithTag(“MainCamera”).GetComponent(orbit).mainMenu=false; for(变量子:GameObject.Find(“logo”).Transform中的变换){ child.gameObject.ac

我对碰撞器按钮有一个问题:当我在PC上使用该按钮时,它工作正常,但当我在移动设备上使用它时,脚本不工作(但碰撞器应该会产生淡入淡出效果)

这是我的脚本:

#pragma strict
函数OnMouseDown(){
GameObject.FindWithTag(“MainCamera”).GetComponent(orbit).mainMenu=false;
for(变量子:GameObject.Find(“logo”).Transform中的变换){
child.gameObject.active=false;
}
var敌人:GameObject[]=GameObject.findGameObjectsSwithTag(“敌人”);
for(var child3:敌人中的游戏对象){
销毁(3);
}
for(变量子项:GameObject.Find(“menu_main”).Transform中的变换){
child.gameObject.active=false;
}   
var num:GameObject[]=GameObject.FindGameObjectsWithTag(“num”);
for(var child2:num中的游戏对象){
销毁(2);
}
for(变量子项:GameObject.Find(“menu_end”).Transform中的变换){
child.gameObject.active=false;
}   
for(var-child:GameObject.Find(“healthbar”).Transform中的转换){
child.gameObject.active=true;
}   
GameObject.Find(“_Game”).GetComponent(Game).score=0;
}

因此,您的问题可以归结为一些非常简单的问题。虽然触摸事件类似于鼠标事件,在很多方面它们的处理方式都是相同的,但这是其中一种情况

简言之

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

以及相关的代码(在您正在使用的JS/UnityScript中,虽然我建议切换到C#,但它相对来说比较简单):

函数更新(){
//iPhone中OnMouseDown的代码。取消引用以进行测试。
var-hit:RaycastHit;
对于(变量i=0;i

只需将一个包含此功能的新脚本连接到主摄像头,就可以开始了。您现有的OnMouseDown脚本将重新开始工作。

因此您的问题归结为一些非常简单的问题。虽然触摸事件类似于鼠标事件,在很多方面它们的处理方式都是相同的,但这是其中一种情况

简言之

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

以及相关的代码(在您正在使用的JS/UnityScript中,虽然我建议切换到C#,但它相对来说比较简单):

函数更新(){
//iPhone中OnMouseDown的代码。取消引用以进行测试。
var-hit:RaycastHit;
对于(变量i=0;i

只需将一个包含此功能的新脚本连接到主摄像头,就可以开始了。您现有的OnMouseDown脚本将重新开始工作。

从JS切换到C#很容易:您已经在使用
#Pragma strict
,所以您所要做的就是将
var xxx:Type
更改为
Type xxx
,并将for循环使用
而不是
感谢您的脚本解释,你是个救命恩人:@AndreMatiun别忘了投票,把我的答案标为“接受”(绿色复选标记)。:)OP的代表并没有太多的投票权,但若问题得到解决,他可以回答,也应该回答。请注意,现在很少有地方可以使用
Physics.Raycast
来检测对对象的点击,否则OP会遇到通过UI点击和点击游戏对象的问题。新的应该用于Unity 4.5及更高版本。从JS切换到C很容易:您已经在使用
#Pragma strict
,所以您所要做的就是将
var xxx:Type
更改为
Type xxx
,并且您的for循环在
中使用
,而不是
谢谢您的解释,你是个救命恩人:@AndreMatiun别忘了投票,把我的答案标为“接受”(绿色复选标记)。:)OP的代表并没有太多的投票权,但若问题得到解决,他可以回答,也应该回答。请注意,现在很少有地方可以使用
Physics.Raycast
来检测对对象的点击,否则OP会遇到通过UI点击和点击游戏对象的问题。新版本应用于Unity 4.5及以上版本。
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");
          }
       }
   }
}