77.내일배움캠프 69일차 TIL <Unity Unity 2D 팀프로젝트- MartialGod:Reborn - 18일차> 07/16

정광훈(Unity_9기)·2025년 7월 16일

TIL (Today I Learned)

목록 보기
78/97
post-thumbnail

A(스크립트)가 B(스크립트)를 알고 있냐는 말은
A와 B가 코드적으로 연결되어있냐는 의미.

A 스크립트가 B 스크립트에 접근하여 B 스크립트의 변수나 함수를 사용할 수 있도록
코드적으로 연결되어 있다는 의미.


세이브 노드는 활성화 시키면 [F]키를 누르라는 텍스트를 활성화한다.

근데, A 세이브 노드와 B 세이브 노드가 존재하는데 A세이브 노드에서 UI를 활성화하고 나감.
그 후 B 세이브 노드를 활성화하고 나가면 A 세이브 노드에 [F]상호작용 텍스트가 출력되는 문제 발생.

public class SaveNodeUI : UIBase
{
    [SerializeField] public SaveNode saveNode;
    public void Interaction() // 플레이어와 상호작용
    {
        if (saveNodeAnimation.isActivate == false) // 세이브 노드 비활성화(첫 상호 작용 전)일 때
        {
            SetInteractionTextActive(false); // 상호작용 텍스트("F") 비활성화
            saveNodeAnimation.ChangeAnimation(); // 세이브 노드 활성화 애니메이션 작동
            StartCoroutine(InteractionTexCoroutine()); // 상호작용 텍스트("F") 활성화

            return;
        }

        if (saveNodeAnimation.GetCurrentAnimStateInfo()) // ActivateIdle 애니메이션이 실행 중이면
        {
            SaveNodeUI snUI = UIManager.Instance.GetUI<SaveNodeUI>();
            snUI.OnUI();
            // this는 이 코드가 포함된 스크립트 인스턴스 자체를 의미
            // SaveNodeUI는 어떤 SaveNode 객체와 연관되어 작동해야 하는지에 대한 정보를 얻게 됨
            snUI.saveNode = this;
            
            if (interactionText != null)
            {
                SetInteractionTextActive(false); // 상호작용 텍스트 [F]를 비활성화
            }
        }
    }

snUI.saveNode = this;

이 문장은 SaveNodeUI에서 SaveNode타입의 변수를 받는데
그 변수를 현재 SaveNode코드가 포함된 이 객체와 연결하라고 하는 의미이다.

이렇게 해야 SaveNode가 개별적으로 SaveNodeUI를 호출할 수 있다.

0개의 댓글