zyo*_*neo 1 c# unity-game-engine
在Unity中是否有类似Toast的消息,类似于GUI,而与android类似。在android中,只需一行代码就很容易。
public void buttonclick()
{
// Message to show
}
Run Code Online (Sandbox Code Playgroud)
小智 13
/// <param name="message">Message string to show in the toast.</param>
private void _ShowAndroidToastMessage(string message)
{
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject unityActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
if (unityActivity != null)
{
AndroidJavaClass toastClass = new AndroidJavaClass("android.widget.Toast");
unityActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
{
AndroidJavaObject toastObject = toastClass.CallStatic<AndroidJavaObject>("makeText", unityActivity, message, 0);
toastObject.Call("show");
}));
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用Text组件和Mathf.Lerp功能通过将文本淡入Color.clear颜色,等待一段时间然后淡入淡出来完成此操作。这篇文章描述了如何通过一个简单的fadeInAndOut功能来做到这一点。在淡化文本之前,获取原始的文本颜色,然后启用“文本”组件。淡出后,恢复颜色,然后禁用“文本”组件。
这是带有Text组件的简化吐司:
void Start()
{
showToast("Hello", 2);
}
public Text txt;
void showToast(string text,
int duration)
{
StartCoroutine(showToastCOR(text, duration));
}
private IEnumerator showToastCOR(string text,
int duration)
{
Color orginalColor = txt.color;
txt.text = text;
txt.enabled = true;
//Fade in
yield return fadeInAndOut(txt, true, 0.5f);
//Wait for the duration
float counter = 0;
while (counter < duration)
{
counter += Time.deltaTime;
yield return null;
}
//Fade out
yield return fadeInAndOut(txt, false, 0.5f);
txt.enabled = false;
txt.color = orginalColor;
}
IEnumerator fadeInAndOut(Text targetText, bool fadeIn, float duration)
{
//Set Values depending on if fadeIn or fadeOut
float a, b;
if (fadeIn)
{
a = 0f;
b = 1f;
}
else
{
a = 1f;
b = 0f;
}
Color currentColor = Color.clear;
float counter = 0f;
while (counter < duration)
{
counter += Time.deltaTime;
float alpha = Mathf.Lerp(a, b, counter / duration);
targetText.color = new Color(currentColor.r, currentColor.g, currentColor.b, alpha);
yield return null;
}
}
Run Code Online (Sandbox Code Playgroud)