모바일 앱에서 디바이스의 배터리 잔량 표시하기
PC나 콘솔 같은 디바이스에서 동작하는 앱이라면 상관없는 문제이지만 모바일 같은 휴대기기에서 동작하는 앱이라면 현재 앱이 동작하고 있는 디바이스의 배터리 잔량에 대해서 알아야 하거나 확인해야 할 수도 있다. 사용자가 일일이 화면 상단을 드래그나 터치해서 상태바(Status bar)를 꺼내지 않고도 배터리 잔량을 할 수 있게 하는 방식으로 말이다.
유니티는 모바일을 타깃으로 하는 게임이나 앱들을 굉장히 폭넓게 지원하기 때문에 이와 관련된 기능 역시 제공하고 있다.
SystemInfo.batteryLevel;
SystemInfo.batteryStatus;
유니티에서 배터리의 상태와 관련된 정보는 SystemInfo 클래스의 정적 프로퍼티를 통해서 가져올 수 있다.
첫 번째로 batteryLevel은 현재 디바이스의 배터리 충전량으로 float 변수이며, 0-1사이의 값을 가지며, 이 프로퍼티를 호출한 디바이스가 배터리를 사용하지 않거나 batteryLevel을 지원하지 않는 디바이스라면 -1을 반환한다.
두 번째 프로퍼티는 batteryStatus로 현재 배터리의 상태를 가져올 수 있다. 이 프로퍼티는 BatteryStatus 타입의 열거형이며 열거형의 종류와 내용은 다음과 같다.
BatteryStatus.Unknown; // 충전 상태를 알 수 없음. 배터리 상태를 지원하지 않는 플랫폼일 때 반환되는 값.
BatteryStatus.Discharging; // 충전 케이블이 연결되지 않았고, 충전도 되지 않는 상태.
BatteryStatus.NotCharging; // 충전 케이블은 연결되어 있지만, 충전은 되지 않는 상태.
BatteryStatus.Charging; // 충전 케이블이 연결되어 있고, 충전되고 있는 상태.
BatteryStatus.Full; // 충전 케이블이 연결되어 있고, 배터리가 가득 찬 상태.
간단한 사용 예시
using UnityEngine;
using UnityEngine.UI;
public class BatteryUI : MonoBehaviour
{
Sprite chargeStateSprite; // 배터리 충전중 표시 스프라이트
Sprite fewStateSprite; // 배터리가 부족하다는 표시 스프라이트
Image batteryStateImg; // 배터리 상태 표시 이미지
Image batteryFrameImg; // 배터리 모양 프레임 이미지
Image batteryLevelImg; // 배터리 잔량 표시 이미지
public void UpdateBatteryUI()
{
float batteryLevel = SystemInfo.batteryLevel;
switch (SystemInfo.batteryStatus)
{
case BatteryStatus.Full:
case BatteryStatus.Charging:batteryLevelImg.color = batteryFrameImg.color = Color.white;
batteryStateImg.sprite = chargeStateSprite;
batteryStateImg.gameObject.SetActive(true);
batteryLevelImg.fillAmount = 1f;
break;
case BatteryStatus.Discharging:
if(batteryLevel < 0.1f) // 배터리가 부족하면 이미지를 빨갛게
{
batteryLevelImg.color = batteryFrameImg.color = Color.red;
batteryStateImg.sprite = fewStateSprite;
batteryStateImg.gameObject.SetActive(true);
}
else
{
batteryLevelImg.color = batteryFrameImg.color = Color.white;
batteryStateImg.gameObject.SetActive(false);
}
batteryLevelImg.fillAmount = batteryLevel;
break;
}
}
}
[유니티 어필리에이트 프로그램]
아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.
에셋스토어
여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다.
assetstore.unity.com
Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store
Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!
store.unity.com
Create 2D & 3D Experiences With Unity's Game Engine | Unity Pro - Unity Store
Unity Pro software is a real-time 3D platform for teams who want to design cross-platform, 2D, 3D, VR, AR & mobile experiences with a full suite of advanced tools.
store.unity.com
[투네이션]
-
toon.at
[Patreon]
WER's GAME DEVELOP CHANNEL님이 Game making class videos 창작 중 | Patreon
WER's GAME DEVELOP CHANNEL의 후원자가 되어보세요. 아티스트와 크리에이터를 위한 세계 최대의 멤버십 플랫폼에서 멤버십 전용 콘텐츠와 체험을 즐길 수 있습니다.
www.patreon.com
[디스코드 채널]
Join the 베르의 게임 개발 채널 Discord Server!
Check out the 베르의 게임 개발 채널 community on Discord - hang out with 399 other members and enjoy free voice and text chat.
discord.com
'Unity3D > Programming' 카테고리의 다른 글
[Unity3D] 로그(Log) 출력시 스택 트레이스(Stack trace) 관리하기 (0) | 2018.10.15 |
---|---|
[Unity3D] Input - 마우스 입력 총정리 (2017.3.0f3) (0) | 2018.09.21 |
[Unity3D] Programming - 커스텀 IEnumerator 클래스 만들기(Custon yield instruction) (1) | 2017.07.17 |
[Unity3D] 로딩 씬(Loading Scene) 구현하기 (11) | 2017.07.10 |
[Unity3D] 유니티에서 XML 사용하기 (3) | 2017.06.05 |