构建android的统一代码的问题

时间:2017-10-18 01:15:26

标签: javascript android unity3d

我的代码在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

1 个答案:

答案 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上一样)。