ABOUT ME

천리 길도 한 걸음부터

Today
Yesterday
Total
  • Land Of Memories - Menu - Stage
    유니티 프로젝트/RPG-2D

    안녕하세요.

     

    이번글에서는 Menu - Stage와 DataManager의 stageLevel01이 동기화되는 작업을 구현하였습니다.

     

    먼저 영상 부터 보시겠습니다.


     

    먼저 MenuStage 스크립트에서 관리할 변수들을 선언해 주었습니다.

     


    아마 다 아시겠지만

     

    인스펙터창 에서 자물쇠를 잠가 주시면

     

    다른 오브젝트를 선택해도 인스펙터창이 변하지 않고

     

    여러 개의 오브젝트를 한꺼번에 저장을 할 수 있습니다.!


     

    satgeLevel01 or 02

    각 1번과 2번 Frame입니다.

     

    각 Frame에는 맵이 각 8개씩 담겨 있습니다.

     

    StageLevel... 01 or 02... Img

    해금의 여부를 알리는 자물쇠 이미지입니다.

     

    stageLock... 01 or 02... Img

    자물쇠 이미지 아래 Star 이미지입니다.

    맵이 해금되었음을 시각적으로 알리는 이미지입니다.

     

     

    다음으로 하단에 Public 함수를 생성했습니다.

    데이터를 불러와 stageLevel01이 true라면 

    첫 번째 Level, Lock 이미지의 컬러를 변경해 주었습니다.

     

    초기 Start() 함수에서 한번 실행되게 해 주었는데,

     

    이유는 재접속 시 데이터를 체크하여 시각적인 표시를 해주기 위함입니다.


     

    다음으로는 퀘스트가 완료 됐을 때를 알리는

     

    PopupAnimation 스크립트의 ShowPopup() 함수 내에

    checkNumber의 값이 4 일 때입니다.

     

    stageLevel01의 값을 true로 변경시켜 주었던 코드인데

     

    그 하단에 DataSave()와 함께

     

    CheckStageLock() 함수를 실행시켜 주었습니다.

     

    재접속 시에 사용하기 위함이지만

     

    플레이 도중에도 즉시 반영되기 위하여 실행시켜주었습니다.

     


     

    코드를 테스트를 하면서 작성하는 것을 제외하고 

     

    하하.. 이번 작업도 약간의 실수들이 있었는데요..

     

     

    1. UI 및 오브젝트를 재배치하면서 Ctrl + D로 작업을 했었는데, 스크립트가 입혀져 있는 오브젝트를 복제하는 바람에 스크립트 순서도 및 꼬임 현상 발생.. ( '갑자기 왜 이러지?'라고 생각했습니다..)

     

    2. public으로 선언된 배열의 특정 인덱스 값에만 접근하려고 했던 점입니다.

    배열 자체를 복사하거나 참조로 전달하는 것이 기본 동작이란 것을 생각하지 못하고

    오류가 나지 않았기에 "왜 안되지?"라는 생각과 함께 원인을 찾으려고 했습니다.

     

    클래스를 new 키워드로 생성하여 원소에 접근을 하려고 했다가.. get, set을 만들어서 배열 자체를 리턴 받으려고 했다가..

    사용하려는 스크립트에선 변수 하나 만을 필요로 하기에 개별로 관리를 하기로 했습니다.

     

    3. 다운로드한 에셋들을 정리하면서 Sprite도 정리를 하였는데, Key 오브젝트의 Sprite도 같이 삭제된 점입니다.

    key 오브젝트는 초기에 비활성화 상태이고

    key 오브젝트가 활성화될 타이밍에 활성화가 되지 않아 단순히 코드부터 살펴봤는데요..

     

    인스펙터창 혹은 하이어라키창 한 번만 봤어도 금방 알 수 있었던 문제를

    Debug.Log를 찍어보며 호출이 되나 확인을 했었습니다

     

     

    이 외에도 몇 가지가 있었던 것 같은데..

     

    코드도 물론 중요하지만

     

    "인스펙터 창과 하이어라키 창도 잘 확인하자!!"

     

    이 한 가지만큼이라도 상기시키며 나아가겠습니다.

    (물론 이것만 지킨다는건 아닙니다!)

     

    감사합니다.

    댓글

김효겸 / Tel. 010-7735-0580 / E-mail. dollzzang2@hanmail.net