34 lines
1.3 KiB
C#
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;
|
|
}
|
|
} |