모바일 애플리케이션 개발의 세계에는 최적의 사용자 경험을 제공할 수 있는 기회가 많습니다. 그러한 기회 중 하나는 Android 용어로 "토스트 메시지"라고 하는 일시적이고 눈에 잘 띄지 않는 메시지를 사용함으로써 발생합니다. 사용자 화면 하단에 편리하게 위치한 이러한 간결한 알림은 Android 운영 체제의 기본 기능을 활용하는 강력한 통신 도구를 제공합니다. 이러한 메시지의 경량 특성은 독립 실행형 구현의 필요성을 제거하므로 간단하고 효율적인 사용자 상호 작용을 위해 선호되는 선택이 됩니다.
그러나 Unity 영역에서 개발자는 Unity 편집기에서 이러한 Android 고유의 기본 기능에 직접 액세스할 수 없는 문제로 어려움을 겪을 수 있습니다. 개발자는 스크립트를 적절하게 사용하여 Unity에서 토스트 메시지의 힘을 효과적으로 활용할 수 있습니다.
이 블로그 게시물에서는 Unity 내에서 Android의 토스트 메시지를 성공적으로 호출하는 방법을 보여주면서 이러한 격차를 해소하기 위한 스크립트 기반 솔루션을 제시합니다.
public class AndroidSet : MonoBehaviour
{
#if UNITY_ANDROID
static public AndroidToast instance;
AndroidJavaObject currentActivity;
AndroidJavaClass UnityPlayer;
AndroidJavaObject context;
AndroidJavaObject toast;
void Awake()
{
if (instance == null) instance = this;
else Destroy(gameObject);
UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
context = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
DontDestroyOnLoad(this.gameObject);
}
void ShowToast(string message)
{
currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", message);
toast = Toast.CallStatic<AndroidJavaObject>("makeText", context, javaString, Toast.GetStatic<int>("LENGTH_SHORT"));
toast.Call("show");
}));
}
public void CancelToast()
{
currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
if (toast != null) toast.Call("cancel");
}));
}
#elsevoid Awake()
{
Destroy(gameObject);
}
#endif
}
특히 기본 작업에 익숙하지 않은 개발자에게는 스크립트가 어려워 보일 수 있지만 핵심은 스크립트가 제공하는 기능에 있습니다. 일단 구현되면 ShowToast() 함수는 토스트 알림 생성을 위한 통로 역할을 합니다. 이러한 메시지는 짧은 기간 동안 존재하며 자동으로 사라지기 전에 사용자에게 미묘하게 경고합니다. 그러나 상황에 따라 토스트 메시지를 조기에 해제해야 하는 경우 'CancelToast()' 함수를 사용하면 토스트 메시지를 조기에 끌 수 있습니다.
'Unity' 카테고리의 다른 글
Unity : PlayerEndOfFrame (0) | 2023.07.21 |
---|---|
Unity : Mesh Renderer (0) | 2023.07.19 |
Unity Animator State : 애니메이션 상태 검사 (0) | 2023.07.18 |
Unity에서 GUID란?? (0) | 2023.07.15 |
Unity에서 시간 활용하기 : Time (0) | 2023.07.14 |