This commit is contained in:
2026-08-19 14:45:43 +08:00
parent d495c0a1fb
commit dac32abdc4
45 changed files with 202 additions and 20 deletions
@@ -354,6 +354,11 @@ public class MonsterContral : MonoBehaviour
_cachedChild = null;
}
// ⭐ 2D鱼:重置渲染器缓存(池回收后子层级可能变化)并重新应用sortingOrder层级
_cached2DRenderers = null;
_appliedSortOrder = int.MinValue;
Apply2DOrder();
// ⭐ 池回收的鱼(isInitialized=false)不立即 ChangeState(move),
// 避免 OnMoveUpdata 用旧 moveTime/moveLine 误触发 Id_DieFish_NotFX
// Init 调用后会设置 isInitialized=true 并 ChangeState(move)
@@ -788,6 +793,51 @@ public class MonsterContral : MonoBehaviour
}
public bool ischild0 = false;
public int depthOffset;
// ----------------------------------------------------------------
// ⭐ 2D层级(2D鱼用,与3D鱼的z轴depthOffset深度兼容并存)
// ----------------------------------------------------------------
[Header("2D层级(2D鱼)")]
[Tooltip("是否为2D渲染鱼:用sortingOrder控制层级(3D鱼继续用z轴depthOffset深度,互不影响)")]
public bool is2DFish = false;
[Tooltip("2D鱼的sortingOrder层级值,运行时可调 Set2DOrder(int) 修改")]
public int sortOrder2D = 0;
/// <summary>2D鱼渲染器缓存(设置sortingOrder用,OnEnable重建,避免重复GetComponentsInChildren)</summary>
private Renderer[] _cached2DRenderers;
/// <summary>已应用的sortingOrder值(值未变化时跳过重复设置)</summary>
private int _appliedSortOrder = int.MinValue;
/// <summary>
/// 设置2D层级(sortingOrder)。对鱼身上所有渲染器统一生效,
/// 多渲染器按层级顺序依次 +1 递增,保持鱼内部前后遮挡关系不变。
/// 仅 is2DFish=true 时生效;3D鱼仍走 z 轴 depthOffset,兼容现有逻辑。
/// </summary>
public void Set2DOrder(int order)
{
sortOrder2D = order;
Apply2DOrder();
}
/// <summary>应用sortingOrder到全部子渲染器(值相同则跳过)</summary>
private void Apply2DOrder()
{
if (!is2DFish) return;
if (_appliedSortOrder == sortOrder2D) return;
if (_cached2DRenderers == null)
_cached2DRenderers = GetComponentsInChildren<Renderer>(true);
_appliedSortOrder = sortOrder2D;
for (int i = 0; i < _cached2DRenderers.Length; i++)
{
var r = _cached2DRenderers[i];
if (r != null)
r.sortingOrder = sortOrder2D + i;
}
}
// ================================================================
// 动画
// ================================================================