Я здесь новичок и безуспешно пытался искать решения. Я пытаюсь найти ближайший объект по тегу и с приоритетными целевыми тегами. По какой-то причине l oop не будет go после первого элемента в списке. Вот что у меня есть:
public string[] PriorityTargets;
public float Range;
public GameObject projectileTarget;
void LateUpdate()
{
float distanceToTarget;
Debug.Log(PriorityTargets.Length);
for (int i = 0; i <= PriorityTargets.Length; i++)
{
Debug.Log(PriorityTargets[i]);
Debug.Log(i);
GameObject Target = FindClosestTarget(PriorityTargets[i]);
if (Target)
{
distanceToTarget = Vector3.Distance(transform.position, Target.transform.position);
if (distanceToTarget <= Range)
{
projectileTarget = Target;
Debug.Log("About to Break");
break;
}
}
}
}
Отладчик показывает:
- array.length 3
- i 0
- только строка первого элемента
В сцене нет объектов с тегом PriorityTargets [0], поэтому он должен продолжать работать и прерываться на PriorityTargets [1].
Кроме того, консоль никогда не показывает «О Break ".
вот код FindClosestTarget:
GameObject FindClosestTarget(string TargetTag)
{
GameObject[] gos = GameObject.FindGameObjectsWithTag(TargetTag);
GameObject closest = null;
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in gos)
{
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if (curDistance < distance)
{
closest = go;
distance = curDistance;
}
}
return closest;
}
После отладки в VisualStudio я получаю следующие исключения:
UnityEngine.UnassignedReferenceException : Переменная projectileTarget для gadgetProjectile не была назначена. Вероятно, вам нужно назначить переменную projectileTarget скрипта gadgetProjectile в инспекторе.
UnityEngine.UnassignedReferenceException: переменная projectileTarget для gadgetProjectile не была назначена. Вам, вероятно, нужно назначить переменную projectileTarget скрипта gadgetProjectile в инспекторе.
Существуют и другие исключения, но я не уверен, что они актуальны. Скрипт работает нормально, если есть цель с первым тегом.