我正在尝试搜索字符串数组中的子字符串。我正在使用以下代码(在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吗?或者我在这里犯了错误?
答案 0 :(得分:1)
我认为您需要indexOf
,而不是IndexOf
。假设您正在谈论本机字符串函数。
此外,indexOf
如果没有匹配则返回-1
,如果匹配位于开头则0
,1, 2, 3
...以获取更多位置。因此,您需要> -1
而不是> 0
答案 1 :(得分:1)
除了Kolink的回答,您的if
正在Boundary(clone)
的开头寻找Boundary
,而不是相反。我想你正在寻找:
if (hitFront.collider.gameObject.name.IndexOf(obstacles[i]) >= 0)