TIL

2024 12 18 TIL

noc777 2024. 12. 18. 23:56

현재 계획상 내일까지 한사이클을 완성시켜야한다. 

나머지 부분들은 완료가 되었고 내가 맡은 퍼즐쪽만 남아있다. 

현재 계획상 교수쪽 정보 -> 대학원생 쪽 상호작용 -> 퍼즐 클리어 -> 보상 아이템 -> 다음 퍼즐 해금으로

한 사이클을 계획해놓은 상태이다.

 

현재 겪고있는 문제는 오브젝트에 붙인 SO끼리 서로 같은 데이터로 인식을 못하는 상황이었다.

 

 IEnumerator ScanEmblem()
 {
     Collider[] colliders = Physics.OverlapSphere(transform.position, radius);

     foreach(Collider collider in colliders)
     {
         if(!collider.CompareTag("Player"))continue;
         Debug.Log("석상 근처 플레이어 감지");
         if (collider.TryGetComponent<PlayerEquipment>(out PlayerEquipment equip))
         {
             Debug.Log(equip.curEquip);
             Debug.Log(emblem);
             if(equip.curEquip == emblem)
             {
                 PuzzleManager.Instance.UnsealPuzzle();
                 Activated();
                 break;
             }
         }
     }
     yield return compareTime;

     coroutine = null;
 }

 

현재 추론으론

1.PlayerEquipment 쪽의 생성하고 또 파괴하는 방식이 영향을 주었나?

파괴되는 것은 ItemObject지 ItemData 자체는 파괴되지 않는다.

 

2.DataManager 에서 리소스로드를 하여 같은 참조를 시켜야하는가?

동적 생성을 염두하였을 때 이것도 염두해두어야할 것 같다.

하지만 이게 지금 상황의 해답이 되지 않을 것이다.

 

알고보니 내가 착각하여 ItemObject를 ItemData와 비교시키고 있었다.. 

플레이어가 장착한 아이템의 비어있는 데이터를 매개변수로 받은 데이터로 할당시켜주었다.

그리고 ItemObject의 ItemData를 비교하도록 하니 제대로 작동한다.

        curEquip.itemData = data;
        
        
        
         if(equip.curEquip.itemData == emblem)

 

이건 내가 다른 사람의 작업코드를 확인을 제대로 못한것이 컸다.

코드 오류의 문제를 찾다가도 다른 곳에서 되돌아봐야함도 다시 한번 느꼈다. 

같은 실수를 반복하지 않길 바래서 오늘 TIL에 적어둔다.

 

 

이외 문제 : 다음 퍼즐 진행 코드 이후 활성화상태인 석상인데도 상호작용이 되는 부분을 고쳐야한다.  

isActivated 일 때는 작동을 하지 않도록 지시하였는데 이것도 상태로 바꾸어서 세분화를 시켜놓아야하나 고민중 

아침에 팀원들과 상의해봐야할 것 같다.

'TIL' 카테고리의 다른 글

2024 12 20 TIL  (0) 2024.12.20
2024 12 19 TIL  (0) 2024.12.19
2024 12 17 TIL  (0) 2024.12.17
2024 12 16 TIL  (0) 2024.12.16
2024 12 15 TIL  (0) 2024.12.15