在unityscript中搜索字符串数组中的子字符串

时间:2013-01-25 20:20:00

标签: arrays unity3d unityscript

我正在尝试搜索字符串数组中的子字符串。我正在使用以下代码(在Unity3中):

var obstacles = ["Border", "Boundary", "BoundaryFlame"];
var frontAvailable = true;
var leftAvailable = true;
var rightAvailable = true;
var hitFront: RaycastHit;
if (Physics.Raycast(transform.position, transform.position + transform.forward, hitFront, 1.5)) {
    Debug.Log("I hit this in front: ");
    Debug.Log(hitFront.collider.gameObject.name);
    for (var i = 0; i < obstacles.length; i++)
    {
       if (obstacles[i].IndexOf(hitFront.collider.gameObject.name) > -1)
       {
          Debug.Log("Hit in front!");
          frontAvailable = false;
       }
    }
}

问题是,Debug.Log显示Boundary(Clone)。我已将Boundary包含在数组obstacles中。代码下面不应该将frontAvailable设置为false吗?或者我在这里犯了错误?

2 个答案:

答案 0 :(得分:1)

我认为您需要indexOf,而不是IndexOf。假设您正在谈论本机字符串函数。

此外,indexOf如果没有匹配则返回-1,如果匹配位于开头则01, 2, 3 ...以获取更多位置。因此,您需要> -1而不是> 0

答案 1 :(得分:1)

除了Kolink的回答,您的if正在Boundary(clone)的开头寻找Boundary,而不是相反。我想你正在寻找:

if (hitFront.collider.gameObject.name.IndexOf(obstacles[i]) >= 0)