public static void ExportIndexRenderersData(string exportPath, GameObject root, bool includeDeactive)
        {
            IndexRenderersData indexRenderersData = ScriptableObject.CreateInstance(typeof(IndexRenderersData)) as IndexRenderersData;

            indexRenderersData.RenderersIndices = new List <IndexRenderersData.Indices>();
            indexRenderersData.RenderersData    = new List <RendererData>();

            Transform   iterTransform = root.transform;
            Stack <int> indices       = new Stack <int>();

            InternalExport(indexRenderersData, indices, iterTransform, includeDeactive);

            AssetDatabase.CreateAsset(indexRenderersData, exportPath);
        }
        private static void InternalExport(IndexRenderersData indexRenderersData, Stack <int> indices, Transform rootTransform, bool includeDeactive)
        {
            int childCount = rootTransform.childCount;

            for (int iChild = 0; iChild < childCount; iChild++)
            {
                Transform  iterChild      = rootTransform.GetChild(iChild);
                GameObject iterGameObject = iterChild.gameObject;
                if (!includeDeactive &&
                    !iterGameObject.activeSelf)
                {
                    continue;
                }

                indices.Push(iChild);
                if (Common.Utility.ObjectUtility.HasStaticEditorFlag(iterGameObject
#if UNITY_2019_1_OR_NEWER
                                                                     , StaticEditorFlags.ContributeGI
#else
                                                                     , UnityEditor.StaticEditorFlags.LightmapStatic
#endif
                                                                     ))
                {
                    UnityEngine.Renderer iterRenderer = iterGameObject.GetComponent <UnityEngine.Renderer>();
                    if (iterRenderer)
                    {
                        indexRenderersData.RenderersIndices.Add(new IndexRenderersData.Indices(indices));

                        RendererData rendererData = new RendererData();
                        rendererData.Export(iterRenderer);
                        indexRenderersData.RenderersData.Add(rendererData);
                    }
                }

                InternalExport(indexRenderersData, indices, iterChild, includeDeactive);
                indices.Pop();
            }
        }