Project_WL/Assets/Script/Ingame/NoSeeLongDMob.cs

34 lines
1.3 KiB
C#
Raw Normal View History

2024-12-15 01:39:39 +00:00
using System.Collections.Generic;
using UnityEngine;
public class NoSeeLongDMob : MyCoroutine
{
List<Renderer> list_Renderer = new List<Renderer>();
float dist = 80f;
2024-12-15 01:39:39 +00:00
private void Start()
2024-12-15 01:39:39 +00:00
{
list_Renderer.AddRange(GetComponentsInChildren<Renderer>());
Set_Repeat_for1sec(() =>
2024-12-15 01:39:39 +00:00
{
if (Camera.main == null) return;
var pos = Camera.main.transform.position;
2024-12-15 01:39:39 +00:00
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)
2024-12-15 01:39:39 +00:00
list_Renderer[i].enabled = false;
else if (!list_Renderer[i].enabled && Vector3.Distance(pos, list_Renderer[i].transform.position) <= dist)
2024-12-15 01:39:39 +00:00
list_Renderer[i].enabled = true;
}
});
2024-12-15 01:39:39 +00:00
}
2025-02-07 08:04:56 +00:00
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;
2025-02-07 08:15:59 +00:00
return !list_Renderer[0].enabled;
2025-02-07 08:04:56 +00:00
}
2024-12-15 01:39:39 +00:00
}