카테고리 없음

알고리즘) 더디 플래그 (Dirty Flag & Dirty Bit)

테샤르 2025. 4. 19. 19:53

더디 플래그 (Dirty Flag & Dirty Bit)

 

Dirty Flag는 어떤 객체나 상태가 변경되었음을 매번 업데이트하지 않고

특정 순간에서만 확인을 하기 위한 플래그를 말한다.

 

반응형

 

< 예시 코드 >

적의 위치가 변경이되는 순간에 dirty flag를 통해서 업데이트하는 시점을 판단하는 코드이다.

 

using UnityEngine;

public class EnemyAI : MonoBehaviour
{
    public Transform player;

    private Vector3 lastPlayerPosition;
    private bool isPlayerPositionDirty = true;
    private float cachedDistance;

    void Start()
    {
        if (player != null)
            lastPlayerPosition = player.position;
    }

    void Update()
    {
        // 플레이어 위치가 바뀌었는지 확인
        if (player.position != lastPlayerPosition)
        {
            isPlayerPositionDirty = true;
            lastPlayerPosition = player.position;
        }

        if (isPlayerPositionDirty)
        {
            RecalculateDistance();
            isPlayerPositionDirty = false;
        }

        // 거리 기반 추적 또는 공격 판단 등
        if (cachedDistance < 5f)
        {
            Debug.Log("Enemy is chasing player!");
        }
    }

    void RecalculateDistance()
    {
        cachedDistance = Vector3.Distance(transform.position, player.position);
        Debug.Log($"[Recalculated] Distance to player: {cachedDistance}");
    }
}

 

 

 

★★☆☆

 

반응형