public static void EditTile(TiledTileset tileset, int lid)
        {
            TiledTileWindow window = CreateInstance <TiledTileWindow>();

            window.tileset = tileset;
            window.lid     = lid;
            window.ShowUtility();
        }
        void DrawTilesetEditing()
        {
            if (target.tilesets == null || target.tilesets.Length != data.tilesets.Length)
            {
                target.tilesets = new TiledTileset[data.tilesets.Length];
            }
            if (showTilesets == null || showTilesets.Length != target.tilesets.Length)
            {
                showTilesets = new bool[target.tilesets.Length];
            }
            for (int i = 0; i < target.tilesets.Length; i++)
            {
                TiledTilesetData tilesetData = data.tilesets[i];

                if (target.tilesets[i] == null)
                {
                    target.tilesets[i] = CreateInstance <TiledTileset>();
                }
                target.tilesets[i].Init(tilesetData, fullPath);

                if (!(showTilesets[i] = EditorGUILayout.Foldout(showTilesets[i], tilesetData.name)))
                {
                    continue;
                }

                EditorGUI.indentLevel++;
                EditorGUILayout.BeginVertical();
                EditorGUI.indentLevel--;

                target.tilesets[i] = EditorGUILayout.ObjectField("Tileset Asset", target.tilesets[i], typeof(TiledTileset), true) as TiledTileset;

                for (int col = 0; col < tilesetData.columns; col++)
                {
                    EditorGUILayout.BeginHorizontal();
                    for (int row = 0; row < tilesetData.tilecount / tilesetData.columns; row++)
                    {
                        int lid = row + col * tilesetData.columns;
                        EditorGUILayout.BeginVertical();

                        if (GUILayout.Button(target.tilesets[i].tiles[lid].texture, GUILayout.ExpandWidth(true)))
                        {
                            TiledTileWindow.EditTile(target.tilesets[i], lid);
                        }

                        EditorGUILayout.EndVertical();
                    }
                    EditorGUILayout.EndHorizontal();
                }

                if (GUILayout.Button("Save Tileset"))
                {
                    string path = EditorUtility.SaveFilePanelInProject("Save Tileset", tilesetData.name, "asset", "Message");
                    if (path.Length > 0)
                    {
                        AssetDatabase.CreateAsset(target.tilesets[i], path);
                    }
                }

                EditorGUILayout.EndVertical();
            }
        }