Tags
- emplace_back
- UI/UX Engineer
- Interaction developer
- LSL_Script
- solidity
- 좋은 개발자
- postman
- Android
- C++
- postman tests
- MFC
- postman collection
- postman pre-request
- oracle
- c#
- 프런트엔드
- postman session
- Android/iOS Developer
- 다빈치 리졸브
- postman excel
- postman collection variables
- 우수한 프런트 개발자
- Unity
- postman automations
- postman html parse
- Front-end developer
- postman csv
- web developer
- Intellij
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Archives
- Today
- Total
david's daily developer note
[Unity] 스킬 쿨타임 보여주기 본문
728x90
게임에서 스킬을 사용했을때나, 건설, 생산의 쿨타임을 보여줄 때, 어떻게 해야할까?
위와 같은 스킬의 이미지와 쿨타임을 표시할 텍스트가 있다고 하자.
유니티 Hierachy는 다음과 같다.
Timer 객체는 남은 시간을 표시할 텍스트 객체이다.
Disable은 초록색 프레임 이미지와 같은 이미지로 좀 더 검은색으로 표현한다.
Disable의 이미지 속성은 다음과 같다. Top방향에서 360도, 반시계 방향으로 채워지는 속성이다.
그럼 아래 예시를 보면서, 쿨타임 텍스트 표시를 구현하는 방법을 살펴보자.
private float cooltime = 10f; //현재 남은 시간
private float cooltime_max = 10f; //쿨타임
public Text timer; //남은 시간을 표시할 텍스트
public Image disable; //남은 시간을 표시할 이미지
IEnumerator CoolTimeFunc()
{
while (cooltime > 0.0f)
{
cooltime -= Time.deltaTime;
//쿨타임 이미지
disable.fillAmount = cooltime / cooltime_max;
//쿨타임 텍스트
string t = TimeSpan.FromSeconds(cooltime).ToString("s\\:ff");
string[] tokens = t.Split(':');
cooltime_text.text = string.Format("{0}:{1}", tokens[0], tokens[1]);
yield return new WaitForFixedUpdate();
}
}
1. 현재 남은 시간을 cooltime 변수, 전체 쿨타임을 cooltime_max에 담아둔다. 예시에서는 10초의 쿨타임을 가정한다.
2. CoolTimeFunc 코루틴 함수가 실행되고 현재 쿨타임이 남아있다면, 1프레임 시간만큼을 감산한다.
3. 남은 시간만큼 쿨타임 이미지의 fillAmount 값을 수정한다.
4. 남은 쿨타임을 분과 초의 표현으로 바꾸고 (00:00:12.340000), ":"로 분리하여, 분과 초를 표현한다.
- TimeSpan Ref : https://docs.microsoft.com/ko-kr/dotnet/standard/base-types/custom-timespan-format-strings
5. cooltime이 0보다 작거나 같다면, 코루틴이 종료된다.
728x90
'[Develop] Unity' 카테고리의 다른 글
[Unity] Android 게임 ISO 출시하기 1 (개발 환경 준비) (0) | 2022.09.27 |
---|---|
[Unity] 구글 결제 라이브러리 버전4 업그레이드 (0) | 2022.09.07 |
[Unity] Unity IAP 4.1.5 Upgrade (0) | 2022.09.07 |
[Unity] Unity Ads SDK 4.0.1 Upgrade (0) | 2022.09.06 |
[Unity] EasySave Primitive Type Save/Load Function Example (0) | 2022.06.21 |