要实现通知中心功能,首先要创建一个游戏物体,在上面挂载GUITeture和GUIText脚本。注意GUITexture和GUIText脚本的顺序,GUITexture在前,GUIText在后,否则GUITexture会将GUIText遮挡住。

接着设置Position属性,讲Position的X属性设置为1.2,Y设置为0.9,这样就将物体设置为屏幕之外靠近右上角的位置。

下面给物体挂载脚本,实现通知功能。

 using UnityEngine;
using System.Collections; public class TestTest : MonoBehaviour
{
private GUITexture guiTexture;
private GUIText guiText;
private float x;
private bool sholdMove = true;
private bool shouldFadeOut = true;
public float stopMoveTime = ;
public bool shouldPlay = true;
private float winStoreNotificationCenterStayTime = 3f;
private float androidToastStayTime = 0.5f;
public enum NotificationStyle { AndroidToast, WinStoreNotificationCenter }; public NotificationStyle currentNotificationStyle = NotificationStyle.WinStoreNotificationCenter;
void Start()
{
guiTexture = GetComponent<GUITexture>();
guiText = GetComponent<GUIText>(); audio.PlayDelayed(0.5f); switch (currentNotificationStyle)
{
case NotificationStyle.AndroidToast: Vector3 pos = guiTexture.gameObject.transform.position;
pos.x = 0.5f - (guiTexture.pixelInset.size.x / Screen.width) * 0.5f;
pos.y = 0.5f + (guiTexture.pixelInset.size.y / Screen.height) * 0.5f;
guiTexture.gameObject.transform.position = pos;
guiText.alignment = TextAlignment.Center; shouldFadeOut = true; break; case NotificationStyle.WinStoreNotificationCenter: x = - (guiTexture.pixelInset.size.x / Screen.width) - 0.02f;
shouldFadeOut = false;
break;
default: break;
} } // Update is called once per frame
void Update()
{
switch (currentNotificationStyle)
{
case NotificationStyle.AndroidToast: if (stopMoveTime != && stopMoveTime + androidToastStayTime <= Time.time)
{
shouldFadeOut = true;
} if (shouldFadeOut)
{
Color temp = guiTexture.color;
temp.a -= Time.deltaTime / 2f;
guiTexture.color = temp;
if (guiTexture.color.a <= )
{
shouldFadeOut = false;
Destroy(this.gameObject);
}
} break;
case NotificationStyle.WinStoreNotificationCenter: if (sholdMove)
{
guiTexture.transform.Translate(new Vector3(-0.1f, , ) * Time.deltaTime * );
if (guiTexture.transform.position.x <= x)
{
sholdMove = false;
stopMoveTime = Time.time;
}
} if (stopMoveTime != && stopMoveTime + winStoreNotificationCenterStayTime <= Time.time)
{
shouldFadeOut = true;
} if (shouldFadeOut)
{
Color temp = guiTexture.color;
temp.a -= Time.deltaTime;
guiTexture.color = temp;
if (guiTexture.color.a <= )
{
shouldFadeOut = false;
Destroy(this.gameObject);
}
} break; default:
break;
}
}
}

然后给游戏物体加上Audio Source组件,由于播放消息声音。接下来将物体命名为Notification,做成Prefab。最终结果如下图所示:

下面写一个Notification脚本,用于统一管理通知。

 using UnityEngine;
using System.Collections; public class NotificationCenter : MonoBehaviour
{
public static NotificationCenter Instance; public GameObject notificationPrefab;
void Awake()
{
Instance = this;
} public void Add(TestTest.NotificationStyle notificationStyle, string guiTextContent)
{
GameObject go = Instantiate(notificationPrefab) as GameObject;
go.GetComponent<TestTest>().currentNotificationStyle = notificationStyle;
go.guiText.text = guiTextContent;
}
}

这样,当我们使用的时候直接调用NotificationCenter.Instance. Add(TestTest.NotificationStyle notificationStyle, string guiTextContent)

方法就行了。其中notificationStyle参数表示消息现实的风格(WinStore样式或Android Toast样式),guiTextContent表示GUIText组件现实的文本,也就是消息内容。

接着我的上一篇文章,要想显示截图保存成功的消息,只需要这样调用NotificationCenter.Instance. Add(TestTest.NotificationStyle.WinStoreNotificationCenter, "成功截图并保存")。

Unity干中学——如何实现类似Windows Store 应用程序和Android Toast的通知?的更多相关文章

  1. Unity3D开发Windows Store应用程序 注意事项

    原地址:http://blog.csdn.net/jbjwpzyl3611421/article/details/12704491 针对最近在移植window store项目中遇到的问题,我整理了官方 ...

  2. PowerShell将Windows store应用程序安装为开发者模式

    原文: PowerShell将Windows store应用程序安装为开发者模式 在本地部署Windows 商店应用程序时,我们会遇到Add-AppDevPackage.ps1脚本,这个脚本和所在安装 ...

  3. Unity干中学——如何实现游戏截图?

    using UnityEngine; using System.Collections; using System.IO; public class ScreenShot : MonoBehaviou ...

  4. Unity Game Starter Kit for Windows Store and Windows Phone Store games

    原地址:http://digitalerr0r.wordpress.com/2013/09/30/unity-game-starter-kit-for-windows-store-and-window ...

  5. Unity for Windows: II – Publishing Unity games to Windows Store

    原地址:http://digitalerr0r.wordpress.com/2013/08/27/unity-for-windows-ii-publishing-to-windows-8/ Windo ...

  6. Windows Store App 过渡动画

    Windows Store App 过渡动画     在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...

  7. 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)

    这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...

  8. 用unity4.3发布WINDOWS STORE APP应用的方法

    http://www.cnblogs.com/suxsho/ 原创,转载请声明 ============================================================ ...

  9. kiosk-mode,免密码登陆, sideload Windows Store apps 等

    MVVM带来的性能问题及其解决方案  MVVM 和语言性能提示:https://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/mt628050. ...

随机推荐

  1. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  2. javascript 匿名函数的理解,js括号中括function 如(function(){})

    代码如下: (function(){  //这里忽略jQuery所有实现  })();  (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也 ...

  3. Codeforces Beta Round #10 D. LCIS(DP&amp;LCIS)

    D. LCIS time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  4. mysql 异常处理实例

    1. 语法: DECLARE handler_action HANDLER FOR condition_value [, condition_value] ... statement handler_ ...

  5. Java 国际化 语言切换

      Java国际化 我们使用java.lang.Locale来构造Java国际化的情境. java.lang.Locale代表特定的地理.政治和文化.需要Locale来执行其任务的操作叫语言环境敏感的 ...

  6. try{}catch(){}//根据异常信息使用不同的方法要怎么实现

    try{ }catch(Exception e){ if(e.getMessage().contains("123456798")) //使用e.getMessage().cont ...

  7. (转)ecshop产品详情页显示不清晰

    详情页面的商品图片的设置方法 后台商店设置-显示设置-显示设置(就是这里,商品图片宽度和高度设置的大点就行了,放大镜效果也清晰了) 按照您详情页面图片的实际显示大小来添写. 商品管理-图片批量处理,这 ...

  8. ImageView 设置OnTouchListener

    ImageView的OnTouchListener,onTouch方法要返回true,MotionEvent.ACTION_UP,MotionEvent.ACTION_MOVE 才有效. 其实关于返回 ...

  9. 在MVC中写Filter时经常filterContext无法代码提示HttpContext的方法和属性的原因

    需要用System.Web.Abstractions.dll HttpContextBase是在System.Web.Abstractions下的,添加对System.Web.Abstractions ...

  10. youphp学习整理

    <?php //后台公共模块 // _list 数据显示 // add 添加/编辑 视图 // insert 添加处理函数 // edit 添加/编辑 视图 // update 更新处理函数 / ...