- Home /
Scene tree text generation
Hello, Is it possible to read the list of objects in the scene and for each collect information about their components, its names and what other objects are assigned to them. Ex. Scene --> CameraPrefabName ---> CameraScriptName ----> ScriptVariableName - value 10 ---> OtherPrefabName etc.
Where in the example i have Camera object with name of CameraPrefabName, it has assigned script with name CameraScriptName and that script can have publicly assigned some variable ScriptVariableName and at the time of generation the value was 10.
Thanks in advance. I would be thankful where to start so I would be able to write it by myself. If there is existing solution it would be perfect. I need that in order to improve changing package importing as on upgrade I have to delete previous package and somestuff is hard to get back later (no names for missing scripts etc.)
Answer by Dinosaurs · Jan 17, 2019 at 02:35 PM
To get all the game objects in a scene, you can use Scene.GetRootGameObjects()
For example:
GameObject[] allGameObjects = SceneManager.GetActiveScene().GetRootGameObjects();
will get you an array of all the gameobjects at the root of the scene. You can then use Transform.GetChild() and Transform.childCount to iterate over all their children.
If you want to get all the components on an object, you can use GetComponents() to get an array of all of them.
Component[] allComponents = gameObject.GetComponents<Component>();
To get the properties of the components will be a little trickier; you'll likely need to use reflection. Something like this:
public Component component;
...
PropertyInfo[] properties = component.GetType().GetProperties();
foreach(PropertyInfo prop in properties)
{
Debug.Log(prop.Name + " : " + prop.GetValue(component);
}
I was trying to write parser of .unity file and scannig all .meta files in the project (guid), but indeed this approach will be faster. For someone interesting in parsing I was able to find guid in meta description of every file but did not figure out why ex. prefabs do not have m_Name in their description (probably connected somehow with fileID field).
Thanks again for that solution !