84 lines
4.3 KiB
C#
84 lines
4.3 KiB
C#
|
|
// WL-816k — ① 데모 물 셰이더(Water.shadergraph) 복사본 생성 + 셰이더 속성 전수 실측
|
||
|
|
// 원본 Assets/3DPixelArtEnvironment/** 는 0줄 수정. 복사본만 만든다.
|
||
|
|
using UnityEngine;
|
||
|
|
using UnityEditor;
|
||
|
|
using System.Text;
|
||
|
|
|
||
|
|
public static class WL816k_Build
|
||
|
|
{
|
||
|
|
const string SRC = "Assets/3DPixelArtEnvironment/Materials/Water.mat";
|
||
|
|
const string DST = "Assets/WL/Look/Farm/Materials/Farm_Water_Demo.mat";
|
||
|
|
const string SO = "Assets/WL/Look/Farm/Resources/WL/WLIslandLookSettings.asset";
|
||
|
|
|
||
|
|
public static void Run()
|
||
|
|
{
|
||
|
|
var sb = new StringBuilder();
|
||
|
|
sb.AppendLine("=== WL-816k ① 데모 물 복사본 + 셰이더 속성 실측 ===");
|
||
|
|
|
||
|
|
var src = AssetDatabase.LoadAssetAtPath<Material>(SRC);
|
||
|
|
sb.AppendLine("원본 = " + (src == null ? "🔴 없음" : src.name + " · shader " + src.shader.name));
|
||
|
|
if (src == null) { Done(sb); return; }
|
||
|
|
|
||
|
|
if (AssetDatabase.LoadAssetAtPath<Material>(DST) == null)
|
||
|
|
{
|
||
|
|
bool ok = AssetDatabase.CopyAsset(SRC, DST);
|
||
|
|
sb.AppendLine("복사 " + (ok ? "성공" : "🔴 실패") + " → " + DST);
|
||
|
|
AssetDatabase.Refresh();
|
||
|
|
}
|
||
|
|
else sb.AppendLine("복사본 이미 있음 → " + DST);
|
||
|
|
|
||
|
|
var dst = AssetDatabase.LoadAssetAtPath<Material>(DST);
|
||
|
|
if (dst == null) { sb.AppendLine("🔴 복사본 로드 실패"); Done(sb); return; }
|
||
|
|
sb.AppendLine("복사본 = " + dst.name + " · shader " + (dst.shader == null ? "null" : dst.shader.name)
|
||
|
|
+ " · renderQueue " + dst.renderQueue + " · GUID " + AssetDatabase.AssetPathToGUID(DST));
|
||
|
|
|
||
|
|
// ── 셰이더 속성 전수 ────────────────────────────────────
|
||
|
|
var sh = dst.shader;
|
||
|
|
sb.AppendLine("");
|
||
|
|
sb.AppendLine("[셰이더 속성 " + ShaderUtil.GetPropertyCount(sh) + "개]");
|
||
|
|
for (int i = 0; i < ShaderUtil.GetPropertyCount(sh); i++)
|
||
|
|
{
|
||
|
|
string n = ShaderUtil.GetPropertyName(sh, i);
|
||
|
|
var t = ShaderUtil.GetPropertyType(sh, i);
|
||
|
|
string v = "?";
|
||
|
|
if (t == ShaderUtil.ShaderPropertyType.Color) v = dst.GetColor(n).ToString("F3");
|
||
|
|
else if (t == ShaderUtil.ShaderPropertyType.Vector) v = dst.GetVector(n).ToString("F3");
|
||
|
|
else if (t == ShaderUtil.ShaderPropertyType.Float || t == ShaderUtil.ShaderPropertyType.Range) v = dst.GetFloat(n).ToString("F4");
|
||
|
|
else if (t == ShaderUtil.ShaderPropertyType.TexEnv) { var tx = dst.GetTexture(n); v = tx == null ? "(없음)" : tx.name + " " + tx.width + "x" + tx.height; }
|
||
|
|
if (ShaderUtil.IsShaderPropertyHidden(sh, i)) continue;
|
||
|
|
sb.AppendLine(" " + n + " [" + t + "] = " + v);
|
||
|
|
}
|
||
|
|
sb.AppendLine("");
|
||
|
|
sb.AppendLine("[키워드] " + string.Join(" · ", dst.shaderKeywords));
|
||
|
|
|
||
|
|
// ── 지금 SO ────────────────────────────────────────────
|
||
|
|
var so = AssetDatabase.LoadAssetAtPath<ScriptableObject>(SO) as WL.Look.Farm.WLIslandLookSettings;
|
||
|
|
if (so != null)
|
||
|
|
{
|
||
|
|
sb.AppendLine("");
|
||
|
|
sb.AppendLine("[SO 지금] waterMode=" + so.waterMode
|
||
|
|
+ " · waterTo=" + (so.waterTo == null ? "null" : so.waterTo.name)
|
||
|
|
+ " · waterFrom=" + (so.waterFrom == null ? "null" : so.waterFrom.name)
|
||
|
|
+ " · shoreFoamEnabled=" + so.shoreFoamEnabled
|
||
|
|
+ " · shoreFoamWidth=" + so.shoreFoamWidth);
|
||
|
|
}
|
||
|
|
else sb.AppendLine("🔴 SO 로드 실패");
|
||
|
|
|
||
|
|
// ── 섬 물 평면 vs 데모 평면 크기 ───────────────────────
|
||
|
|
var pf = AssetDatabase.LoadAssetAtPath<GameObject>("Assets/3DPixelArtEnvironment/Prefabs/Water_Plane.prefab");
|
||
|
|
if (pf != null)
|
||
|
|
{
|
||
|
|
var mf = pf.GetComponentInChildren<MeshFilter>();
|
||
|
|
sb.AppendLine("데모 Water_Plane: scale " + pf.transform.localScale.ToString("F2")
|
||
|
|
+ " · mesh " + (mf == null ? "?" : mf.sharedMesh.name + " bounds " + mf.sharedMesh.bounds.size.ToString("F1")));
|
||
|
|
}
|
||
|
|
Done(sb);
|
||
|
|
}
|
||
|
|
|
||
|
|
static void Done(StringBuilder sb)
|
||
|
|
{
|
||
|
|
System.IO.File.WriteAllText("AgentScripts/WL816k_BUILD.txt", sb.ToString());
|
||
|
|
Debug.Log("[816k build]\n" + sb);
|
||
|
|
}
|
||
|
|
}
|