首次提交
This commit is contained in:
52
Assets/Scripts/Editor/TestEditorUtil.cs
Normal file
52
Assets/Scripts/Editor/TestEditorUtil.cs
Normal file
@@ -0,0 +1,52 @@
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public static class TestEditorUtil
|
||||
{
|
||||
|
||||
[MenuItem("Assets/修改替换材质", false, 1)]
|
||||
private static void ReplaceShadersInSelectedFolder()
|
||||
{
|
||||
// 获取选中的材质文件
|
||||
Material[] selectedMaterials = Selection.GetFiltered<Material>(SelectionMode.Assets);
|
||||
|
||||
if (selectedMaterials.Length == 0)
|
||||
{
|
||||
Debug.LogWarning("No materials selected. Please select materials in the Project window.");
|
||||
return;
|
||||
}
|
||||
|
||||
int replacedCount = 0;
|
||||
|
||||
foreach (Material material in selectedMaterials)
|
||||
{
|
||||
if (material.shader.name == "Standard")
|
||||
{
|
||||
// 保存Albedo贴图
|
||||
Texture albedoTexture = material.GetTexture("_MainTex");
|
||||
|
||||
// 替换Shader为Universal Render Pipeline/Lit
|
||||
material.shader = Shader.Find("Universal Render Pipeline/Lit");
|
||||
|
||||
// 将保存的Albedo贴图赋值给Base Map
|
||||
if (albedoTexture != null)
|
||||
{
|
||||
material.SetTexture("_BaseMap", albedoTexture);
|
||||
}
|
||||
|
||||
// 保存材质
|
||||
EditorUtility.SetDirty(material);
|
||||
replacedCount++;
|
||||
}
|
||||
}
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
|
||||
Debug.Log($"Replaced {replacedCount} materials with URP Lit shader.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user