Project_WL/Assets/Script/Ingame/NoSeeLongDMob.cs

34 lines
1.3 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public class NoSeeLongDMob : MyCoroutine
{
List<Renderer> list_Renderer = new List<Renderer>();
float dist = 80f;
private void Start()
{
list_Renderer.AddRange(GetComponentsInChildren<Renderer>());
Set_Repeat_for1sec(() =>
{
if (Camera.main == null) return;
var pos = Camera.main.transform.position;
for (int i = 0; i < list_Renderer.Count; i++)
{
if (list_Renderer[i] == null) continue; // 파괴된 렌더러 방어 (Unity 6 MissingReferenceException · 2026-09-05 #744)
if (list_Renderer[i].enabled && Vector3.Distance(pos, list_Renderer[i].transform.position) > dist)
list_Renderer[i].enabled = false;
else if (!list_Renderer[i].enabled && Vector3.Distance(pos, list_Renderer[i].transform.position) <= dist)
list_Renderer[i].enabled = true;
}
});
}
public bool IsNoSeeMob()
{
// Unity 6: 씬 전환 중 Actor.OnDestroy → Get_EnemyActors → 이 함수가 파괴된 SkinnedMeshRenderer 를 읽어 MissingReferenceException (2026-09-05 #744 실측)
if (list_Renderer.Count == 0 || list_Renderer[0] == null) return false;
return !list_Renderer[0].enabled;
}
}