- Home /
Question by
Xdy · Aug 02, 2012 at 07:36 AM ·
bce0019getcomponentsinchildren
BCE0019: 'GetComponentsInChildren' is not a member of 'Object'.
This if for PauseMenuScript.js error at 'object.GetComponentsInChildren' what should I write to fix it?
function GetObjectStats(object) {
var filters : Component[];
filters = object.GetComponentsInChildren(MeshFilter);
for( var f : MeshFilter in filters ){
tris += f.sharedMesh.triangles.Length/3;
verts += f.sharedMesh.vertexCount;
}
}
Comment
Best Answer
Answer by Eric5h5 · Aug 04, 2012 at 07:31 AM
function GetObjectStats (object : GameObject) { // All variables must be declared properly
var filters = object.GetComponentsInChildren.<MeshFilter>();
for (var f : MeshFilter in filters) {
tris += f.sharedMesh.triangles.Length/3;
verts += f.sharedMesh.vertexCount;
}
}
Answer by cupsster · Aug 02, 2012 at 08:46 AM
untested c# code
void GetObjectStats ( GameObject obj)
{
MeshFilter[] components = obj.GetComponentsInChildren<MeshFilter>();
foreach (MeshFilter mf in components)
{
tris += mf.sharedMesh.triangles.Length/3;
verts += mf.sharedMesh.vertexCount;
}
}
Answer by cupsster · Aug 02, 2012 at 09:31 AM
function GetObjectStats(object:GameObject) {
var filters : MeshFilter[];
filters = object.GetComponentsInChildren("MeshFilter", true);
for( var f : MeshFilter in filters ){
tris += f.sharedMesh.triangles.Length/3;
verts += f.sharedMesh.vertexCount;
}
}
You really should avoid the GetComponent string-version ;) It's not type safe and quite slow. In UnityScript just write:
GetComponentsInChildren($$anonymous$$eshFilter);
With this I got BCE0023: No appropriate version of 'UnityEngine.GameObject.GetComponentsInChildren' for the argument list '(String, boolean)' was found.
@Bunny83: Sadly (and inconsistently) GetComponents doesn't work like GetComponent. The generic version should be used in this case.