최종프로젝트 진행상황
오늘의 작업 :
해결하자s :
#4 ✅
인벤토리에서 보유하고 있는 룸A 클릭하고 옆에 룸B 를 누르면 룸A의 장착 표시가 남아있는 이슈
상황에 맞게 선택 표시 활성화/비활성화 설정하자
InventRoom_ContentsBtnUI.cs
private void ClickRoomContentBtn(PointerEventData data)
{
if (Owner.inventRoomDescri_PopupUI == null) // 설명 팝업이 안 떠 있다면
{
Owner.inventRoomDescri_PopupUI = Main.Get<UIManager>().OpenPopup<InventRoomDescri_PopupUI>(); // 설명창 열어주고
Owner.inventRoomDescri_PopupUI.RoomData = RoomData; // 데이터 넘겨주고
Owner.inventRoomDescri_PopupUI.Owner = this; // owner 설정해주고
_selectCheckImg.gameObject.SetActive(true);
//if (_selectCheckImg == null)
//{
// _selectCheckImg.gameObject.SetActive(true); // 선택 표시 활성화 -> 이게 null 이 아니라는 의미인가 ?
//}
//Owner._roomSelectCheckImg = _selectCheckImg;
}
//if (_selectCheckImg.gameObject.activeSelf) // 선택표시 활성화되어있다면
//{
// _selectCheckImg.gameObject.SetActive(false); // 일단 선택표시 활성화되어있는거 꺼준다.
//}
//else if (Owner.inventRoomDescri_PopupUI != null && _selectCheckImg.gameObject.activeSelf) // 설명 팝업이 떠있고, 선택표시가 활성화 되어있다 ?
//{
// _selectCheckImg.gameObject.SetActive(false); // 일단 선택표시 활성화되어있는거 꺼준다.
// Main.Get<UIManager>().ClosePopup();
//}
//else if (Owner.inventRoomDescri_PopupUI != null && _selectCheckImg.gameObject.activeSelf) // 설명 팝업이 떠있고, 선택표시가 활성화 안 되어있다 ?
//{
// _selectCheckImg.gameObject.SetActive(true); // 일단 선택표시 활성화되어있는거 꺼준다.
//}
else // 설명 팝업이 이미 떠 있다면
{
// // 선택표시가 어딘가에서 활성화되어있다면 일단 꺼준다.
// 그리고 다시 active 해.
Owner.inventRoomDescri_PopupUI.Owner._selectCheckImg.gameObject.SetActive(false);
Owner.inventRoomDescri_PopupUI.RoomData = RoomData; // 데이터 넘겨주고
Owner.inventRoomDescri_PopupUI.SetInfo(); // 데이터 갱신
Owner.inventRoomDescri_PopupUI.Owner = this; // owner 업데이트
_selectCheckImg.gameObject.SetActive(true);
}
}
// 3시간의 고민이 5분만에 해결되는 magic 만능해결사 갓.굿.동.님.
갓굿동님의 손길
else // 설명 팝업이 이미 떠 있다면
{
Owner.inventRoomDescri_PopupUI.Owner._selectCheckImg.gameObject.SetActive(false);
//Owner.inventRoomDescri_PopupUI.RoomData = RoomData; // 데이터 넘겨주고
//Owner.inventRoomDescri_PopupUI.SetInfo(); // 데이터 갱신
Owner.inventRoomDescri_PopupUI.Owner = this; // owner 업데이트
_selectCheckImg.gameObject.SetActive(true);
}
// Owner.inventRoomDescri_PopupUI.Owner._selectCheckImg.gameObject.SetActive(false);
// Owner.inventRoomDescri_PopupUI.Owner = this; // owner 업데이트
🔥 에러 하나 고치니 새로운 곳에서 또 에러 또 발견 !!!!!!!!!! 지쟈스....
잘 해결된 줄 알았는데 Room 에서 아이템 하나 클릭하고 Unit 갔다가 다시 Room 와있으면 체크표시 남아있음 !!!!!!!!
다행히 이번 에러는 혼자서 스스로 해결 !
InventRoom_ContentsBtnUI.cs
public Inventory_PopupUI Owner { get; set; }
private void ClickRoomContentBtn(PointerEventData data)
{
if (Owner.inventRoomDescri_PopupUI == null) // 설명 팝업이 안 떠 있다면
{
Owner.inventRoomDescri_PopupUI = Main.Get<UIManager>().OpenPopup<InventRoomDescri_PopupUI>(); // 설명창 열어주고
Owner.inventRoomDescri_PopupUI.RoomData = RoomData; // 데이터 넘겨주고
Owner.inventRoomDescri_PopupUI.Owner = this; // owner 설정해주고
_selectCheckImg.gameObject.SetActive(true);
}
Inventory_PopupUI.cs.cs
private void ClickRoomBtn(PointerEventData EventData)
{
_inventRoomScrollView.gameObject.SetActive(true);
_inventUnitScrollView.gameObject.SetActive(false);
if (inventUnitDescri_PopupUI != null) // unit description 창이 켜져있다면
{
inventUnitDescri_PopupUI.Owner._selectCheckImg.gameObject.SetActive(false);
Main.Get<UIManager>().ClosePopup(); // stack 으로 popup 이 쌓임. -> 후입선출 되는 흐름 ! 그래서 ClosePopup 하게 되면 제일 최근에 생성된 UnitDescri_PopupUI 가 닫히는 것이다 !
inventUnitDescri_PopupUI = null;
}
}
#5 ✅
인벤토리에서 Room 누르고 보유 룸 아이템 누른 다음에 Unit 버튼을 누르면 떠있는 룸의 설명 팝업창이 꺼지게 하자
(인벤토리에서 카테고리 Room 이나 Unit 버튼 누르면 켜져있던 Description 관련 팝업 싹다 꺼 ~)
일단 Inventory_PopupUI.cs 에서 inventUnitDescri_PopupUI 를 들고있죠.
InventUnit_ContentsBtnUI.cs 에서
public Inventory_PopupUI Owner { get; set; }
Owner (즉, Inventory_PopupUI) 의 inventUnitDescri_PopupUI 에 InventUnitDescri_PopupUI 를 넣어주고
InventUnit_ContentsBtnUI.cs
private void ClickUnitContentBtn(PointerEventData data)
{
if (Owner.inventUnitDescri_PopupUI == null) // 설명창이 안 열려 있다면
{
Owner.inventUnitDescri_PopupUI = Main.Get<UIManager>().OpenPopup<InventUnitDescri_PopupUI>("InventUnitDescri_PopupUI"); // 설명창 열어주고
Owner.inventUnitDescri_PopupUI.UnitData = UnitData; // 데이터 넘겨주고
Owner.inventUnitDescri_PopupUI.Owner = this; // owner 설정해주고
}
else // 설명창이 이미 열려 있다면
{
Owner.inventUnitDescri_PopupUI.UnitData = UnitData; // 데이터 넘겨주고
Owner.inventUnitDescri_PopupUI.SetInfo(); // 데이터 갱신 !
//_equipCheckImg.gameObject.SetActive(true);
}
}
Stack 으로 Popup 이 쌓이게끔 UIManager 만든 굿동.....갓.굿.동.⭐🌟
Inventory_PopupUI.cs
private void ClickRoomBtn(PointerEventData EventData)
{
_inventRoomScrollView.gameObject.SetActive(true);
_inventUnitScrollView.gameObject.SetActive(false);
// unit description 창이 켜져있는 걸 꺼줘야하는데 열려있다는 정보를 어디서 어떻게 가져와야하는 것인가
if (inventUnitDescri_PopupUI != null) // unit 창이 켜져있다면
{
Main.Get<UIManager>().ClosePopup(); // stack 으로 popup 이 쌓임. -> 후입선출 되는 흐름 ! 그래서 ClosePopup 하게 되면 제일 최근에 생성된 UnitDescri_PopupUI 가 닫히는 것이다 !
inventUnitDescri_PopupUI = null;
}
}