我的代码在Windows上完美运行,但是当我切换到android时,它无法正常工作。我收到了错误
Assets/enemyNo.js(49,20): BCE0019: 'gameObject' is not a member of 'Object'.
以下是我遇到问题的代码
function OnTriggerEnter2D(obj) {
// Name of the object that collided with the enemy
var name = obj.gameObject.name;
// If the enemy collided with a bullet
if (name == "bullet(Clone)") {
// Destroy itself (the enemy) and the bullet
//shship.AddScore(scoreValue);
Destroy(gameObject);
Destroy(obj.gameObject);
}
// If the enemy collided with the spaceship
if (name == "spaceship") {
// Destroy itself (the enemy) to keep things simple
Destroy(gameObject);
}
}
我的min android设置为kitkat,我评论它并且它工作正常,没有与对象的交互。我的SDK最初没有工作,但我复制了部分较旧的SDK(我相信的工具),它可以编译并转换成APK
答案 0 :(得分:1)
因为Android不支持动态输入。 在这行代码中:
var name = obj.gameObject.name;
name被声明为通用变量,没有特定类型。 Windows,在编译阶段,让它通过,但Android不会。 它应该是:
var name : String = obj.gameObject.name;
两个提示:
1)[推荐]开始学习C#,它更强大,更有效,更好地支持。
2)如果您想继续使用UnityScript路径,请在您的每个脚本的开头添加#pragma strict
。这迫使编译器应用Android中的严格规则,防止动态类型(Windows上会出现编译错误,就像在Android上一样)。