Unity 批量选择图片并转换为材质

批量选择图片并转换为材质

  1. 用Selection.GetFiltered来表示选择到的物体
    • 第一个参数表示仅检索此类型的对象。
    • 第二个参数 SelectionMode.Assets 表示仅返回 Asset 目录中的资源对象。
  2. 先检查当前路径下是否有此名称的材质存在,若存在则不生成新的材质。
  3. 创建一个材质实例。
  4. 将材质创建为Asset资源。
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

/// <summary> 照片转换为对应的材质 </summary>
public class ImageTransMaterial : MonoBehaviour
{
    [Header("材质生成地址")]
    public string materialPath;
    
#if UNITY_EDITOR
    [MenuItem("GameObject/Create Materials")]
    public void SetMat()
    {
        Object[] m_objects = Selection.GetFiltered(typeof(Texture2D), SelectionMode.Assets); //选择到的物体

        foreach (var i in m_objects)
        {
            Debug.Log(i.name);

            if (AssetDatabase.LoadAssetAtPath( materialPath + i.name + ".mat",
                typeof(Material))) //判断当前材质是否存在
            {
                continue;
            }
            else
            {
                Material mat = new Material(Shader.Find("Legacy Shaders/Diffuse")); //实例一个新的材质
                mat.SetTexture("_MainTex", i as Texture2D); //设置材质的贴图
                AssetDatabase.CreateAsset(mat,
                     materialPath + i.name + ".mat"); //创建材质,并设置材质保存的位置 (需要修改储存位置)
            }
        }
    }
#endif
}

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值