1
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
// ================================================================
|
||||
// 动画
|
||||
// ================================================================
|
||||
|
||||
Reference in New Issue
Block a user