private IEnumerator HandleOffMeshLink() { while (true) { if (m_agent.isOnOffMeshLink) { OffMeshLinkData data = m_agent.currentOffMeshLinkData; OffMeshLink link = data.offMeshLink; link.costOverride += 1; Collider[] hitColliders = Physics.OverlapSphere(transform.position, 5); foreach (Collider col in hitColliders) { UnitController unit = col.GetComponent <UnitController>(); if (null != unit && !unit.GetAgent().isOnOffMeshLink&& link.Equals(unit.GetAgent().nextOffMeshLinkData.offMeshLink)) { unit.RecalculatePathUnit(); } } while (m_agent.transform.position != data.endPos) { m_agent.transform.position = Vector3.MoveTowards(m_agent.transform.position, data.endPos, m_agent.speed * Time.deltaTime); yield return(null); } if (m_agent.isOnNavMesh) { m_agent.CompleteOffMeshLink(); } link.costOverride -= 1; } yield return(null); } }