Beispiel #1
0
        static void CreateSprite()
        {
            if (System.Array.TrueForAll(Selection.objects, selected => !(selected is Texture))) {
                Logger.LogError("No sprites were selected.");
                return;
            }

            for (int i = 0; i < Selection.objects.Length; i++) {
                Texture texture = Selection.objects[i] as Texture;

                if (texture == null) {
                    continue;
                }

                string textureName = texture.name.EndsWith("Texture") ? texture.name.Substring(0, texture.name.Length - "Texture".Length) : texture.name;
                string texturePath = AssetDatabase.GetAssetPath(texture);
                string materialPath = Path.GetDirectoryName(texturePath) + "/" + textureName + ".mat";

                Sprite sprite = AssetDatabase.LoadAssetAtPath(texturePath, typeof(Sprite)) as Sprite;

                if (sprite == null) {
                    Logger.LogError(string.Format("Texture {0} must be imported as a sprite.", texture.name));
                    continue;
                }

                AssetDatabase.CopyAsset(HelperFunctions.GetAssetPath("GraphicsTools/SpriteMaterial.mat"), materialPath);
                AssetDatabase.Refresh();

                Material material = AssetDatabase.LoadAssetAtPath(materialPath, typeof(Material)) as Material;

                GameObject gameObject = new GameObject(textureName);
                GameObject child = gameObject.AddChild("Sprite");
                SpriteRenderer spriteRenderer = child.AddComponent<SpriteRenderer>();

                spriteRenderer.sprite = sprite;
                spriteRenderer.material = material;

                PrefabUtility.CreatePrefab(Path.GetDirectoryName(texturePath) + "/" + textureName + ".prefab", gameObject);
                AssetDatabase.Refresh();

                gameObject.Remove();
            }
        }
Beispiel #2
0
        public void RemoveEmptyFolder(GameObject folder)
        {
            Transform parent = folder.transform.parent;

            if (parent != null && parent.childCount == 1 && parent != pureData.transform) {
                folderStructure.Remove(folder);
                RemoveEmptyFolder(folder.transform.parent.gameObject);
            }
            else {
                folderStructure.Remove(folder);
                folder.Remove();
            }
        }