- Home /
Find Position in Array or List?
Here is my code, it's pretty self explanatory:
var points : GameObject[];
function findposinarr(array, Val){
for (var l = 0; l < array.length; l++){
if (array[l] == Val){
return l;
}
}
}
respawnPointNumber = findposinarr(points,pointOfRespawn);
Where pointOfRespawn is a String with the name of a gameObject;
I get the error:
'length' is not a member of 'Object'.
Why?
Answer by Eric5h5 · Dec 30, 2013 at 02:09 AM
You must type your variables. (array, Val)
won't work; it needs to be (array : GameObject[], val : String)
(also, don't use uppercase for variables). However you can't compare a String to a GameObject; you'd need GameObject.name.
Answer by TowerOfBricks · Dec 30, 2013 at 01:21 AM
Because you need to use .Length.
This would have been spotted during compile time if you had used types in your function parameters. I am not sure what unityscript uses as the default return values ( I am surprised it allows you to skip specifying a return value for all cases ), but you should look that up. Probably null.
Also, you might want to use System.Array.IndexOf ( points, pointOfRespawn) instead, it does basically the same thing.
See http://msdn.microsoft.com/en-us/library/system.array.indexof(v=vs.110).aspx
[EDIT] Rereading your question. You say that pointOfRespawn was a string containing the name of the GameObject. GameObjects are not strings, so you cannot compare them and expect them to be true at any time ( it will never be ). You should compare against the name member of the GameObject if you want to do that.
No, in Unityscript you can use .length or .Length. Unityscript uses type inference for the return type of functions, although you can specify it yourself if desired. (In some cases it's required if the compiler can't figure it out.) It returns the default value for the return type if you don't say what to return, though it will give you a warning about implicitly returning a value in that case.
Your answer

Follow this Question
Related Questions
When i call some variables to an other second script i have a problem 1 Answer
Accessing other script problem 1 Answer
Need help with GUI label not displaying variable 1 Answer
Trying to proceed to next level when multiple items have collided 1 Answer
Would it be better to just combine these two scripts? 1 Answer