我遇到了对撞机按钮的问题:当我在PC上使用按钮时,它工作正常,但是当我在移动设备上使用它时,脚本无效(但对撞机应该会产生淡入淡出效果)。
这是我的脚本:
#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;
}
答案 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脚本将重新开始工作。