Unity 批量将图片从默认类型改为Sprite类型

先将该脚本放到Editor目录下

如何使用:选中目录,然后点击Tool里面的批量修改按钮

using System;
using UnityEngine;
using UnityEditor;
using System.IO;
using System.Linq;

/// <summary>
/// 此工具可以批量将图片类型修改为精灵
/// </summary>
public class TextureTypeModifier
{
    [MenuItem("Tools/批量修改图片为Sprite(2D and UI)", false, 20)]
    private static void ConvertSelectedFolderToSprite()
    {
        // 获取选中的文件夹路径
        string folderPath = AssetDatabase.GetAssetPath(Selection.activeObject);
        if (!AssetDatabase.IsValidFolder(folderPath))
        {
            EditorUtility.DisplayDialog("错误", "请选择一个文件夹!", "确定");
            return;
        }

        // 递归获取所有图片文件
        string[] imagePaths = Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories)
            .Where(file => 
                file.EndsWith(".png", StringComparison.OrdinalIgnoreCase) ||
                file.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) ||
                file.EndsWith(".jpeg", StringComparison.OrdinalIgnoreCase))
            .ToArray();

        int modifiedCount = 0;
        
        // 批量修改
        foreach (string imagePath in imagePaths)
        {
            if (imagePath.EndsWith(".meta")) continue;

            TextureImporter importer = AssetImporter.GetAtPath(imagePath) as TextureImporter;
            if (importer != null&& importer.textureType==TextureImporterType.Default && importer.textureType != TextureImporterType.Sprite)
            {
                importer.textureType = TextureImporterType.Sprite;
                importer.spriteImportMode = SpriteImportMode.Single;
                importer.mipmapEnabled = false;
                importer.SaveAndReimport();
                modifiedCount++;
            }
        }

        AssetDatabase.Refresh();
        EditorUtility.DisplayDialog("完成", 
            $"已将 {modifiedCount} 张图片转换为 Sprite(2D and UI)\n目录: {folderPath}", "确定");
    }

    // 验证菜单项是否可用(仅当选中文件夹时显示)
    [MenuItem("Tools/批量修改图片为Sprite(2D and UI)", true, 20)]
    private static bool ValidateConvertSelectedFolderToSprite()
    {
        return Selection.activeObject != null && 
               AssetDatabase.IsValidFolder(AssetDatabase.GetAssetPath(Selection.activeObject));
    }
}
### 回答1: 在Unity中,精灵图片的中心点默认是在图片的中心位置。如果想要将中心点调整到脚底,可以采取以下步骤: 1. 将精灵图片的Pivot属性设置为底部中心点(Bottom Center)。 2. 将精灵图片的位置(Position)属性向下移动半个图片的高度。 这样就能将精灵图片的中心点调整到脚底了。如果有多个精灵图片需要调整,可以使用批量修改的方式,选中所有需要修改的精灵图片,然后按照上述步骤进行修改即可。 ### 回答2: 在Unity 2D中,将精灵图片的中心点调整到脚底可以通过以下步骤实现: 1.首先,选择你想要调整中心点的精灵图片,将其拖拽到Unity编辑器的场景中。 2.在Hierarchy面板中,选中该精灵图片的游戏对象。 3.在Inspector面板中,找到“Sprite Renderer”组件,并展开该组件的一些属性。 4.在“Sprite Renderer”组件的属性中,可以看到一个名为“Sprite”的选项。点击该选项后面相邻的小圆圈按钮。 5.在弹出的窗口中,可以看到精灵图片的预览图像和一个叫做“Pivot”的选项。 6.点击“Pivot”选项后的下拉箭头,并选择“Custom”自定义选项。 7.在预览图像上,可以看到一个黄色的十字准心。将该准心拖拽到精灵图片的脚底位置。 8.调整完后,点击“Apply”按钮保存设置。 9.现在,你会发现精灵图片的中心点已经调整到了脚底位置。 通过以上步骤,你可以轻松地将Unity 2D中的精灵图片中心点调整到脚底,以便实现更准确的碰撞检测、动画效果等功能。 ### 回答3: 在Unity2D中,要将精灵图片的中心点调整到脚底,可以按照以下步骤进行操作: 1. 首先,选中你想要调整的精灵图片,然后在Inspector视图中找到Sprite Renderer组件。 2. 在Sprite Renderer的属性面板中,可以看到一个名为"Sprite"的属性框。展开该属性框,可以看到一个"Custom Pivot"选项。 3. 在"Custom Pivot"选项中,可以通过拖拽调整精灵图片的中心点。 4. 为了将中心点移动到脚底,将"Custom Pivot"选项中的X坐标保持不变,而将Y坐标设置为图片的底部(一般是图片的原点坐标)。 5. 调整完中心点后,点击Apply按钮,以应用修改。 6. 在场景中,将该精灵图片添加到游戏对象中时,该对象的中心点将会与精灵图片的底部对齐。 请注意,以上方法仅适用于Unity2D中的Sprite Renderer组件。对于其他类型的组件,如UI Image组件,可能有不同的设置方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值