- Home /
SetActiveRecursively(true) replacement in Uinity4.
When I use "gameobject.SetActive(true)" in unity 4, it just act like "gameobject.active = true" in unity3d 3. How can I do "gameobject.SetActiveRecursively(true)" in unity 4?
I found a reason why it can't set active recursively, Because there is a child under that node have set to be inactive. And there are no option to force the tree to be active too. If this is not a bug, there should be a function to get all gameobject under a node and set everything active.
The change in paradigm in how active works can be tough on pre Unity 4 projects... but switching things to work in the new way is worth it. Everything makes more sense.
I said it act like unity3d because I don't know the only node under it was set to inactive by accident. But there should be a way to force a tree to active or not, other wise there will be even more bugs about setActive because some accident setting in children.
Answer by Eric5h5 · Mar 18, 2013 at 04:20 PM
Generally you'd use SetActive in Unity 4, but in those cases where you really need an exact replacement, then you can make your own function:
function SetActiveRecursively (go : GameObject, active : boolean) {
go.SetActive (active);
for (var t : Transform in go.transform) {
SetActiveRecursively (t.gameObject, active);
}
}
Not as handy as before, but this do the job. Thx for your code.
Answer by akasurreal · Jul 12, 2013 at 06:15 PM
Here's a version that lets you call it directly from a gameObject in c#:
public static class MyExtensions
{
//bring this back to Unity4
public static void SetActiveRecursivelyLegacy (this GameObject go, bool active)
{
go.SetActive(active);
foreach (Transform t in go.transform)
{
t.gameObject.SetActiveRecursivelyLegacy(active);
}
}
}
Your answer
Follow this Question
Related Questions
Unity 4 SetActive - SetActiveRecursively parent-child trouble 2 Answers
SetActiveRecursively not activating children 2 Answers
Unity 4.x Upgrade 1 Answer
Lock camera (on) ontriggerenter 1 Answer