ui基本完毕,修了一大把的bug
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
#if UNITY_EDITOR
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// Editor utility that builds ready-to-use materials from the Rainbow-Cats
|
||||
/// "Unity Dissolve HDR Shaders" pack. We resolve shaders through Shader.Find so
|
||||
/// Unity fills in each graph's real fileID + default property values — hand-writing
|
||||
/// a .mat's shader reference is error-prone and usually ends in a pink material.
|
||||
/// Menu: Tools > Rainbow Dissolve > Create Materials
|
||||
/// </summary>
|
||||
public static class RainbowDissolveMaterialCreator
|
||||
{
|
||||
// Shader Graph registers its shader name as "<m_Path>/<asset file name>".
|
||||
private const string DissolveUrpShaderName = "Shader Graphs/Dissolve Lit URP Shader";
|
||||
private const string OutlineUrpShaderName = "Shader Graphs/HDR Outline Lit URP Shader";
|
||||
private const string DissolveHdrpShaderName = "Shader Graphs/Dissolve Lit HDRP Shader";
|
||||
|
||||
private const string OutputFolder = "Assets/Rainbow-Cats-Unity-Dissolve-HDR-Shaders-main/Materials";
|
||||
|
||||
[MenuItem("Tools/Rainbow Dissolve/Create Materials")]
|
||||
public static void CreateMaterials()
|
||||
{
|
||||
EnsureFolder(OutputFolder);
|
||||
|
||||
// URP shaders (this project is URP 17). HDRP variant is created only if that
|
||||
// shader compiles in the current pipeline, otherwise it would be pink.
|
||||
CreateMaterial(DissolveUrpShaderName, "M_Dissolve_URP");
|
||||
CreateMaterial(OutlineUrpShaderName, "M_HDROutline_URP");
|
||||
CreateMaterial(DissolveHdrpShaderName, "M_Dissolve_HDRP");
|
||||
|
||||
AssetDatabase.SaveAssets();
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
|
||||
private static void CreateMaterial(string shaderName, string materialName)
|
||||
{
|
||||
Shader shader = Shader.Find(shaderName);
|
||||
if (shader == null)
|
||||
{
|
||||
Debug.LogWarning($"[RainbowDissolve] Shader not found: \"{shaderName}\". " +
|
||||
"Skipped (likely a different render pipeline or the graph hasn't imported yet).");
|
||||
return;
|
||||
}
|
||||
|
||||
string path = $"{OutputFolder}/{materialName}.mat";
|
||||
var material = new Material(shader) { name = materialName };
|
||||
AssetDatabase.CreateAsset(material, AssetDatabase.GenerateUniqueAssetPath(path));
|
||||
Debug.Log($"[RainbowDissolve] Created material {path} using shader \"{shaderName}\".", material);
|
||||
}
|
||||
|
||||
private static void EnsureFolder(string assetFolder)
|
||||
{
|
||||
if (AssetDatabase.IsValidFolder(assetFolder))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string parent = Path.GetDirectoryName(assetFolder).Replace('\\', '/');
|
||||
string leaf = Path.GetFileName(assetFolder);
|
||||
if (!AssetDatabase.IsValidFolder(parent))
|
||||
{
|
||||
EnsureFolder(parent);
|
||||
}
|
||||
|
||||
AssetDatabase.CreateFolder(parent, leaf);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user