static void Initialize()
        {
            s_SpriteMeshToTextureCache.Clear();

            string[] spriteMeshGUIDs = AssetDatabase.FindAssets("t:SpriteMesh");

            List <string> needsOverride = new List <string>();

            foreach (string guid in spriteMeshGUIDs)
            {
                SpriteMesh spriteMesh = LoadSpriteMesh(AssetDatabase.GUIDToAssetPath(guid));

                if (spriteMesh)
                {
                    UpdateCachedSpriteMesh(spriteMesh);
                    UpgradeSpriteMesh(spriteMesh);

                    if (s_SpriteMeshToTextureCache.ContainsKey(guid) &&
                        SpriteMeshUtils.NeedsOverride(spriteMesh))
                    {
                        needsOverride.Add(s_SpriteMeshToTextureCache[guid]);
                    }
                }
            }

            s_Initialized = true;

            needsOverride = needsOverride.Distinct().ToList();

            AssetDatabase.StartAssetEditing();

            foreach (string textureGuid in needsOverride)
            {
                AssetDatabase.ImportAsset(AssetDatabase.GUIDToAssetPath(textureGuid));
            }

            AssetDatabase.StopAssetEditing();
        }