최종프로젝트 진행상황
오늘의 작업 :
해결하자s :
#4 🛠
인벤토리에서 보유하고 있는 룸A 클릭하고 옆에 룸B 를 누르면 룸A의 팝업과 장착 표시가 남아있는 이슈
-> 시도방법 :
- Inventory_PopupUI.cs 에서 inventRoomDescri_PopupUI 을 들고 있게 한다. (ContentsBtn Owner 를 this 로 연결해주기)
- InventRoom_ContentsBtnUI.cs 에서 Inventory_PopupUI Owner 로 갖고 있게 하고,
- 버튼 눌렀을 때 inventRoomDescri_PopupUI 안 열려있을 때 / 열려있을 때 조건을 나누어서 설정.
- 설명창이 안 열려있었다면 설명창 열어주고, 데이터 넘기고, owner 설정하고 !
- 설명창이 기존에 열려있었다면 설명창 열어주고, 데이터 갱신하고 !
- 이때 데이터 갱신 함수는 inventRoomDescri_PopupUI 안에 있는 SetInfo() 함수 !
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 설정해주고
}
else // 설명 팝업이 이미 떠 있다면,
{
Owner.inventRoomDescri_PopupUI.RoomData = RoomData; // 데이터 넘겨주고
Owner.inventRoomDescri_PopupUI.SetInfo(); // 데이터 갱신
}
}
- InventRoomDescri_PopupUI.cs 에서
private void OnDestroy() { Owner.Owner.inventUnitDescri_PopupUI = null; // null 처리 ! }
-> 팝업은 이제 중복이 안 되는데, 아직 장착 표시는 not yet...!
#5
인벤토리에서 Room 누르고 보유 룸 아이템 누른 다음에 Unit 버튼을 누르면 떠있는 룸의 팝업창이 꺼져야하지 않을까
인벤토리에서 main Room 이나 Unit 버튼 누르면 켜져있던 Description 관련 팝업 싹다 꺼 ~
#6 ✅
인벤토리에서 유닛이나 룸을 삭제하면, 인벤토리에서 바로 없어지는 것이 아니라 인벤토리를 껐다가 다시 켜야 없어진다.
try -> InventRoomDescri_PopupUI 에 인벤토리 새로고침하는 함수 SetUnitInventory() 를 불러오기 위해
Inventory_PopupUI.cs 부터 스크립트 너머너머 Owner ~ Owner ~~ 이런식으로 작업해서 함수 불러오기 !
-> Owner 의 owner 를 타고가서 인벤토리 새로고침하는 함수 불러와서 해결 !
InventRoomDescri_PopupUI.cs
public InventRoom_ContentsBtnUI Owner { get; set; }
private void ClickDeleteBtn(PointerEventData EventData)
{
// 인벤토리를 껐다가 다시 키면 없어져있긴 하는데 삭제되는 순간에 바로 인벤토리 업데이트까지는 안 됨..
Main.Get<GameManager>().PlayerRooms.Remove(RoomData);
Main.Get<UIManager>().ClosePopup(); // 설명창 닫아주고
Owner.Owner.SetRoomInventory(); // 인벤토리 초기화
}
InventRoom_ContentsBtnUI.cs
public Inventory_PopupUI Owner { get; set; }
Inventory_PopupUI.cs
public void SetRoomInventory()
{
// room
List<ThisRoom> playerRooms = Main.Get<GameManager>().PlayerRooms;
foreach (Transform item in _inventRoomContent.transform)
{
Destroy(item.gameObject);
}
for (int i = 0; i < playerRooms.Count; i++)
{
InventRoom_ContentsBtnUI inventRoomItems = Main.Get<UIManager>().CreateSubitem<InventRoom_ContentsBtnUI>("InventRoom_ContentsBtnUI", _inventRoomContent);
inventRoomItems.RoomData = playerRooms[i];
inventRoomItems.Owner = this;
}
}