Unity3D(59)
-
22.02.15 업적 창 구현하기
업적 창은 지난 번 포스팅했던 상점 구현과 비슷하다. 데이터를 불러오고, UI에 표기하는 것. [도전 과제] 보상 수령이 가능한 업적이 맨 위에, 진행 중인 업적이 가운데에, 모두 완료한 업적은 맨 밑에 나열되도록 할 것이다. 업적 1단계를 완료하고 보상을 받은 후, 보상이 늘어난 다음 단계의 업적 달성 조건을 보여준다. 업적 달성 정도에 따라 별 개수가 달라지고, 버튼 모양 또한 달라지게 한다. 업적 리스트가 실시간으로 갱신된다. [해결 과정] Achievement Info 클래스를 만들어서 게임의 모든 업적 진행 상황을 담았다. 이 인포 클래스를 참조해서 업적이 진행 중인지, 완료된 상태인지, 보상 수령이 가능한 상태인지 판별한다. 업적 창에서 업적의 진행 상태에 따라서 위에 둘 것인지, 밑에 둘 것..
2022.02.15 -
22.02.14 Shop 메뉴 구현하기
총 3가지의 재화를 구입할 수 있는 Shop 메뉴를 구현해보자. 우선 나는 재화 종류마다 팝업 창 오브젝트를 만들어 주어서, 버튼이 눌린상태 , 안눌린 상태 구분하는 코드를 생략했다. 덕분에 수작업은 조금 늘었지만, 할 게 줄어서 좋기도 하다. 전체적인 구조는 다음과 같다. 캔버스의 자식으로 3개의 팝업 창 오브젝트가 있고, 각 팝업 창은 스크롤뷰와 슬롯 프리팹을 가지고 있다. 팝업 창을 열면 팝업창 오브젝트가 자신의 스크롤뷰 안에 슬롯 프리팹을 생성한다. 실행 화면 소스 코드 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class UIShopControl ..
2022.02.14 -
22.02.11 UI 기능 추가 (페이지, 해금, 재화 표시)
2월 9일 포스팅에서 이어지는 내용입니다. 이전 포스팅에서 스테이지 버튼을 클릭했을 때 스테이지에 대한 정보가 나오는 팝업창을 구현했다. 오늘은 잠긴 스테이지의 팝업창을 추가하고, 상단에 재화를 표시하고, 스테이지 목록을 다음 페이지로 넘기는 기능을 구현할 것이다. 스테이지가 잠긴 상태의 팝업창 구현하기 이전에 만들어둔 팝업창을 띄우는 메서드를 보면, '스테이지가 잠겼을 때'는 아무 행동도 하지 않고 함수를 종료하게 만들어 두었다. 이 '스테이지가 잠겼을 때'에 오늘 만들 팝업창을 띄울 코드를 작성해보자. 각 버튼은 자신의 스크립트 내에 UI오브젝트(만든 팝업창) 하나를 갖고 있다. UI오브젝트 또한 자신의 UI요소를 다룰 스크립트 하나를 갖고 있다. '스테이지가 잠겼을 때' 조건문 안에다가 UI오브젝트..
2022.02.11 -
22.02.09 유저 인터페이스 완성하기
[게임 상의 데이터 흐름] UI의 본질은 유저에게 정보를 보여주는 수단이다. 이하 수업 과제 ※ 유저가 스테이지 버튼이나 인벤토리 버튼 중 하나를 클릭했을 때, 해당 버튼의 스테이지 id나 아이템의 id를 조회하기 위해서 상위 부모 오브젝트의 스크립트에서 하위 오브젝트들의 배열을 순회하며 'Init()'을 해주었다. ( Init() : 하위 오브젝트가 갖고 있는 id 속성에 값을 부여해주는 메서드. ) ※ 씬마다 게임매니져가 있어서 씬 내의 모든 UI캔버스들의 연결고리가 된다. 스테이지 씬에서는 그리드에 속한 오브젝트들을 활성/비활성화 하는 식으로 별 개수를 보여주었다. 팝업창의 무기 아이콘들도 마찬가지로 하였다. 그리고 스테이지에 대한 정보를 담은 팝업 창이 나오면 유저는 플레이하면서 사용할 아이템을 ..
2022.02.09 -
22.02.04 JSON 데이터를 UI에 바인딩하기
https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/JSON JSON으로 작업하기 - Web 개발 학습하기 | MDN JavaScript Object Notation (JSON)은 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다. 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용합니다(서버에서 developer.mozilla.org application.persistentDataPath 에는 GameInfo같은 상태가 변화하는 데이터를 저장하고, Resources 폴더에는 스프레드시트 -> JSON같이 외부에서 가져온 데이터를 저장시키는 것 같다. Sprite Atlas 는 텍스쳐를 많이 렌더..
2022.02.05 -
22.02.03 Canvas와 UI 배우기
https://docs.unity3d.com/kr/530/Manual/UICanvas.html 유니티 - 매뉴얼: 캔버스 기본적인 레이아웃 캔버스 Canvas는 모든 UI 요소를 배치하기 위한 영역입니다. Canvas는 Canvas 요소와 함께 사용하는 게임 오브젝트로, 모든 UI 요소는 Canvas의 자식 요소여야 합니다. 새 UI 요소를 작 docs.unity3d.com 버튼이 클릭이 안 되면 버튼이랑 겹치는 오브젝트의 레이캐스트 타겟을 끄기 Sliced 된 텍스쳐는 스프라이트 에디터에서 Slice Line 조절하고 Apply하기 디바이스에서 UI 확인할 때 좋은 것 https://docs.unity3d.com/Packages/com.unity.device-simulator@2.2/manual/ind..
2022.02.03