작성
·
129
0
public override void Init()
{
Bind<GameObject>(typeof(GameObjects));
Get<GameObject>((int)GameObjects.ItemNameText).GetComponent<Text>().text = _name;
Get<GameObject>((int)GameObjects.ItemIcon).BindEvent((PointerEventData) => { Debug.Log($"아이템 클릭! {_name}"); });
}
public void SetInfo(string name)
{
_name = name;
}
UI_Inven_Item에 있는 내용인데
UI_Inven에서
invenItem.SetInfo("집행검 어쩌구");
를 하면 UI_Inven_Item의 _name만 바꿔줬을 뿐인데
어떻게 Component의 값 까지 바뀌는거죠?
제가 생각할 떄는 SetInfo안에
Get<GameObject>((int)GameObjects.ItemNameText).GetComponent<Text>().text = _name;
이 코드가 필요한거 같은데
어떻게 ItemNameText가 업데이트가 되는지 모르겠습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
명성님의 질문에 대한 답변 드리겠습니다.
말씀하신 SetInfo
메소드는 _name 필드의 값을 바꿔주는 기능을 합니다. 그런데 UI에 있는 아이템의 이름은 어떻게 업데이트되는지 궁금해하시는 거군요. 일반적으로는 SetInfo
를 호출한 후 UI 업데이트를 위해 추가적인 메소드를 호출해야 합니다.
예를 들어, 업데이트된 이름으로 UI 텍스트를 갱신하는 메소드를 만들어 볼 수 있겠죠. 아래와 같이 말이죠.
public void UpdateUI()
{
Get<GameObject>((int)GameObjects.ItemNameText).GetComponent<Text>().text = _name;
}
이 메소드는 SetInfo
가 호출된 이후에 명시적으로 호출되어야 하며, 이렇게 하면 UI에 있는 텍스트 컴포넌트가 새로운 이름으로 업데이트 됩니다.
하지만 코드 상에서는 UpdateUI
같은 메소드 호출이 보이지 않는다면, 다른 어딘가에서 이 작업을 수행하고 있는 것일 수 있습니다. 예를 들어, SetInfo
메소드가 호출될 때 이벤트를 트리거해서 해당 작업을 처리하는 리스너가 있을 수 있습니다. 또는 SetInfo
메소드 내부 또는 다른 어딘가에서 _name 필드가 할당될 때 이를 감지하고 자동으로 UI를 업데이트하는 구현이 숨겨져 있을 수도 있습니다.
제공해주신 코드만으로는 구체적인 실행 흐름을 알 수 없기 때문에, SetInfo
메소드 호출 후 어떻게 이름이 UI에 반영되는지 알기 위해서는 SetInfo
가 호출되는 전체 컨텍스트 또는 UI 업데이트와 관련한 다른 코드 부분을 확인해야 할 것 같습니다.
명성님의 코드가 정상 작동하고 있다면 어딘가에서 위와 같은 UI 업데이트 작업이 이루어지고 있을 겁니다. 혹시 말씀주신 내용 이외에 관련 코드나 로직이 더 있다면 같이 살펴보는 것이 좋을 것 같습니다.