
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를 호출할 수 있다.