Unity Collider 按钮在 Android 上不起作用
Unity Collider Button is not working on Android
我有一个碰撞器按钮的问题:当我在 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;
}
所以你的问题可以归结为非常简单的事情。虽然触摸事件与鼠标事件相似,并且在很多方面它们的处理方式相同,但这是它们不同的情况之一。
简单地说,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 脚本将再次开始工作。
我有一个碰撞器按钮的问题:当我在 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;
}
所以你的问题可以归结为非常简单的事情。虽然触摸事件与鼠标事件相似,并且在很多方面它们的处理方式相同,但这是它们不同的情况之一。
简单地说,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 脚本将再次开始工作。