- Home /
Assets/Gravitation_Simulator.cs(23,47): error CS1061: Type `UnityEngine.GameObject' does not contain a definition for `Length' and no extension method `Length' of type `UnityEngine.GameObject' could be found.
I am trying to find the .Length of an array of GameObjects, but it says there is no definition for Length.
using UnityEngine;
using System.Collections;
public class Gravitation_Simulator : MonoBehaviour
{
public static Vector3 getRelativePosition(Transform origin, Vector3 position) {
Vector3 distance = position - origin.position;
Vector3 relativePosition = Vector3.zero;
relativePosition.x = Vector3.Dot(distance, origin.right.normalized);
relativePosition.y = Vector3.Dot(distance, origin.up.normalized);
relativePosition.z = Vector3.Dot(distance, origin.forward.normalized);
return relativePosition;
}
public GameObject Grav_Markers;
void Start ()
{
Grav_Markers = GameObject.FindGameObjectsWithTag ("Grav_Marker");
}
void Update ()
{
for (int i=0;i < Grav_Markers.Length; i = i + 1)
{
gameObject.rigidbody.AddForce(getRelativePosition (gameObject.transform.position, Grav_Markers[i].transform.position));
}
}
}
Answer by erebel55 · May 28, 2015 at 11:53 PM
This is because you define Grav_Markers as a single GameObject instead of an array of GameObjects.
public GameObject Grav_Markers;
should be
public GameObject[] Grav_Markers;
Also, I would recommend not using a public in this case since you aren't assigning them in the inspector.
Thanks a bunch! Was suspecting public wasn't necessary, but saw it in another snippet of code somewhere so I added it in as a precaution.
Answer by Eric5h5 · May 28, 2015 at 11:51 PM
Your variable is just a GameObject, not a GameObject array. Add these: []
Your answer
Follow this Question
Related Questions
array.length read only? workaround? 2 Answers
array out of range while updating mesh variables 4 Answers
Deriving length of a given dimension in a 2D array 1 Answer
C# Variables Transform vs GameObject 1 Answer
Array.length edited using scripts 2 Answers