修复
This commit is contained in:
@@ -66,6 +66,14 @@ namespace IndianOceanAssets.Engine2_5D
|
||||
[Tooltip("红圈扩散速度(世界单位/秒),独立于波纹扩散速度")]
|
||||
[SerializeField] private float ringExpandSpeed = 15f;
|
||||
|
||||
[Header("Shader 引用")]
|
||||
[Tooltip("直接拖入 Assets/Light/shaders/EchoRing.shader。\n"
|
||||
+ "用序列化字段引用而不是 Shader.Find,确保打包时构建管线能静态识别,"
|
||||
+ "不会被 shader stripping 剔除(否则运行时会 fallback 成粉色错误着色器)。\n"
|
||||
+ "留空时仍会尝试 Shader.Find 兜底,但需要把该 shader 加入 "
|
||||
+ "GraphicsSettings 的 Always Included Shaders 列表。")]
|
||||
[SerializeField] private Shader ringShader;
|
||||
|
||||
[Header("冷却")]
|
||||
[Tooltip("回声冷却时间(秒)")]
|
||||
[SerializeField] private float cooldown = 3f;
|
||||
@@ -128,7 +136,10 @@ namespace IndianOceanAssets.Engine2_5D
|
||||
// 不挂载到玩家下——回声中心固定,不跟随玩家移动
|
||||
|
||||
// 创建材质(运行时)
|
||||
var shader = Shader.Find("IndianOcean/EchoRing");
|
||||
// 优先使用序列化字段引用的 shader(构建管线可静态识别,不会被剔除);
|
||||
// 字段为空时再尝试 Shader.Find 兜底(必须同时把 shader 加入 GraphicsSettings
|
||||
// 的 Always Included Shaders,否则打包后 Find 会返回 null → 粉色错误着色器)。
|
||||
var shader = ringShader != null ? ringShader : Shader.Find("IndianOcean/EchoRing");
|
||||
if (shader != null)
|
||||
{
|
||||
_ringMaterial = new Material(shader);
|
||||
@@ -142,7 +153,12 @@ namespace IndianOceanAssets.Engine2_5D
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("[EchoSystem] 找不到 IndianOcean/EchoRing shader!");
|
||||
Debug.LogError(
|
||||
"[EchoSystem] 找不到 IndianOcean/EchoRing shader!红圈将不会渲染。\n"
|
||||
+ "修复方法(二选一):\n"
|
||||
+ " 1) 把 Assets/Light/shaders/EchoRing.shader 拖到本组件的 Ring Shader 字段;\n"
|
||||
+ " 2) Edit → Project Settings → Graphics → Always Included Shaders "
|
||||
+ "里添加该 shader,然后重新打包。");
|
||||
}
|
||||
|
||||
_ringVisual.SetActive(false);
|
||||
|
||||
Reference in New Issue
Block a user