Hi, I’m making a tower defense, and when i want to draw the line to the enemy, I ve this eror : “Object at index 0 is null”.
The fact is, my program is working, but I’ve this error when i launch it.
Thanks for the answer
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Turret : MonoBehaviour {
[Header("Finding the closest enemy")]
public Transform target;
[Header("Values")]
public float range = 15f;
public string enemyTag = "Enemy";
[Header("LineRenderer")]
private LineRenderer line;
public Transform origin;
public float lineDrawSpeed = 1f;
private float counter;
private float dist;
void Start () {
line = GetComponent<LineRenderer>();
line.SetPosition(0, origin.position);
line.SetWidth(0.45f, 0.45f);
InvokeRepeating("UpdateTarget", 0f, 0.2f);
}
void UpdateTarget()
{
GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag);
float shortestDistance = Mathf.Infinity;
GameObject nearestEnemy = null;
foreach(GameObject enemy in enemies)
{
float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);
if(distanceToEnemy < shortestDistance)
{
shortestDistance = distanceToEnemy;
nearestEnemy = enemy;
}
}
if(nearestEnemy !=null && shortestDistance <= range)
{
target = nearestEnemy.transform;
}
else
{
target = null;
}
}
void Update () {
if (target == null)
{
counter = dist = 0;
line.enabled = false;
}
else
{
line.enabled = true;
dist = Vector3.Distance(origin.position, target.position);
Vector3 pointA = origin.position;
Vector3 pointB = target.position;
if (counter < dist)
{
counter += 0.1f / lineDrawSpeed;
}
float l = Mathf.Lerp(0, dist, counter);
Vector3 pointAlongLine = l * Vector3.Normalize(pointB - pointA) + pointA;
line.SetPosition(1, pointAlongLine);
}
}
void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, range);
}
}
ArgumentException: Object at index 0 is null
UnityEditor.SerializedObject..ctor (UnityEngine.Object[] objs, UnityEngine.Object context) (at C:/buildslave/unity/build/Editor/Mono/SerializedObject.bindings.cs:39)
UnityEditor.Editor.GetSerializedObjectInternal () (at C:/buildslave/unity/build/Editor/Mono/Inspector/Editor.cs:553)
UnityEditor.Editor.get_serializedObject () (at C:/buildslave/unity/build/Editor/Mono/Inspector/Editor.cs:452)
UnityEditor.UIElements.InspectorElement..ctor (UnityEditor.Editor editor, Mode mode) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorElement.cs:133)
UnityEditor.UIElements.EditorElement.Init () (at C:/buildslave/unity/build/Editor/Mono/Inspector/EditorElement.cs:84)
UnityEditor.UIElements.EditorElement..ctor (Int32 editorIndex, UnityEditor.InspectorWindow iw) (at C:/buildslave/unity/build/Editor/Mono/Inspector/EditorElement.cs:62)
UnityEditor.InspectorWindow.DrawEditors (UnityEditor.Editor[] editors) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:1392)
UnityEditor.InspectorWindow.RebuildContentsContainers () (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:639)
UnityEditor.InspectorWindow.RedrawFromNative () (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:311)