- Home /
Question by
valtteri_m · Apr 27, 2015 at 04:59 PM ·
javascriptparentchildfindname
Find gameobject with name and if child of Player
The title should be enough to know what I want,
var xGUI : int;
function Start(){
var Player = GameObject.FindWithTag("Player");
Item = FindObjectsOfType(GameObject);
//Creates New Array According to name specifc buildings in Item and
//creates the correct amount of elements for that Array
var count: int = 0;
var GO: GameObject;
//if Item name is ItemHolder and is a parent of Player add 1 to count
for(GO in Item){
if(GO.name == ItemHolder && GO.parent != null){
count ++;
}
}
//If this is the first item set xGUI to 100 (Deafult)
if(count < 1){
xGUI = 10;
}else{
//110 x the amount of other ItemHolders (not counting this)
xGUI = count * 110 - 110;
}
}
I have added info for the important lines, I hope this is clear enough. Please help!
Comment
Answer by Can-Baycay · Apr 27, 2015 at 05:48 PM
This should do it. (Sorry to post in C# but you get the idea)
public static Transform FindChildByNameRecursive(Transform me, string name)
{
if (me.name == name)
return me;
for (int i = 0; i < me.childCount; i++)
{
var child = me.GetChild(i);
var found = child.FindChildByNameRecursive(name);
if (found != null)
return found;
}
return null;
}
public static void FindChildrenByNameRecursive(Transform me, string value, List<Transform> list)
{
if (me.name == value)
{
list.Add(me);
}
for (int i = 0; i < me.childCount; i++)
{
var child = me.GetChild(i);
child.FindChildrenByNameRecursive(value, list);
}
}
You can use it like
var Player = GameObject.FindWithTag("Player");
var ItemHolderList = new List<Transform>();
FindChildrenByNameRecursive(Player.transform, ItemHolder, ItemHolderList);
uh a bit hard because I use javascript and not C# at all.. I don't have the skills to convert this.. please help some more?