타이머가 작동하면서 게이지가 줄어드는 것처럼 보이는건 유니티에서 제공하는 Slider를 사용했다.
Slider를 만들면 다음과 같은 오브젝트들이 생겨난다(Timebar는 본인이 바꾼 이름)
Background는 게이지가 채워지는 배경 영역으로 보면 되고 Fill Area와 Fill이 slider의 value에 따라 달라진다
Fill Area는 다음과 같이 채워지는 영역을 조절?하는 것으로 이해했다
Fill에 있는 스프라이트를 채워질 이미지로 바꾸면(본인의 경우, 노란색 바가 Fill의 스프라이트로 들어감)
이제 Slider의 value에 따라 이미지가 달라질 것이다
Slider 컴포넌트
보통 여기서 건들이는 것은 Direction, 스프라이트가 채워지거나 사라지는 방향을 정할 수 있음. 직접 바꿔보고 value를 다르게 하면 이해하기 쉬움
그리고 밑에 있는 Value는 스크립트에서 변경시킬 수 있다
그리고 알면 좋을 것이 하나 더 있는데 Fill에 있는 Image 컴포넌트를 보면
본인은 지금 바꿔놨지만 원래 Image Type이 Simple이었는데 Simple로 했을 때 value를 조절하다 보면 본래 이미지랑 다르게 보이는 경우가 있었다.
그래서 Filled로 바꾸고 Fill Method를 표현하고자 하는 방식으로 바꾸면(수직, 원형도 가능) 제대로 이미지가 채워지는 것을 볼 수 있었다
이제 본격적으로 타이머를 구현해보겠다.
구현하고자 하는 방식은 사람마다 다 다른데, Update문에서 바꿀 수도 있는데 나는 코루틴을 사용해 구현하기로 했다(성능적으로 뭐가 더 나은지는 잘 모르겠다)
본인은 Timer라는 스크립트를 만들고 다음과 같은 변수들을 만들었다.
slider는 위에서 만든 슬라이더 오브젝트를 넣어줬고
totalTime은 타이머로 설정할 시간, remainTime은 남은 시간 그리고 isPaused는 일시정지 등의 이벤트를 대응하기 위한 변수이다. 자세한 구현내용은 다른 블로그에도 다양하게 있어서 코드를 전체적으로 올리진 않을려고 하고 그냥 핵심만 기록하자면
시작할 때 remainTime에 totalTime 값을 넣어주고 Update나 반복문에서 remainTime -= Time.deltaTime으로 감소시켜주고 slider의 value 값을 remainTime / totalTime으로 해주면 나오는 값으로 비율이 정해져 스프라이트의 일부분만 보여지게 된다.
일반적으로 서버에서 클라이언트로 데이터를 보낼 때 사용하는 양식. 클라이언트가 사용하는 언어에 관계없이 통일된 데이터를 주고 받을 수 있도록, 일정한 패턴을 지닌 문자열을 생성해 내보내면 클라이언트는 그를 해석해 데이터를 저장, 표시할 수 있음. XML의 대안으로 사용되고 있음.
현재 진행중인 졸업 프로젝트에서 사용할 학과 데이터, 강의 데이터, 건물 데이터가 필요한데 데이터들이 좀 많아서 유니티 내부에서 스크립트에 정의하지 말고 구글 스프레드 시트에 데이터를 다 입력한 다음 그 데이터를 JSON으로 변환해 프로젝트에서 보관해서 게임이 시작될 때 그 데이터들을 다 로딩하고 써먹기로 했다.
먼저 CSV 파일로 데이터를 작성한 다음 JSON으로 변환해주는 과정을 거쳤는데 이 때 내가 사용한 사이트는