Unity干中学——如何实现类似Windows Store 应用程序和Android Toast的通知?
要实现通知中心功能,首先要创建一个游戏物体,在上面挂载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的通知?的更多相关文章
- Unity3D开发Windows Store应用程序 注意事项
原地址:http://blog.csdn.net/jbjwpzyl3611421/article/details/12704491 针对最近在移植window store项目中遇到的问题,我整理了官方 ...
- PowerShell将Windows store应用程序安装为开发者模式
原文: PowerShell将Windows store应用程序安装为开发者模式 在本地部署Windows 商店应用程序时,我们会遇到Add-AppDevPackage.ps1脚本,这个脚本和所在安装 ...
- Unity干中学——如何实现游戏截图?
using UnityEngine; using System.Collections; using System.IO; public class ScreenShot : MonoBehaviou ...
- 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 ...
- 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 ...
- Windows Store App 过渡动画
Windows Store App 过渡动画 在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...
- 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)
这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...
- 用unity4.3发布WINDOWS STORE APP应用的方法
http://www.cnblogs.com/suxsho/ 原创,转载请声明 ============================================================ ...
- kiosk-mode,免密码登陆, sideload Windows Store apps 等
MVVM带来的性能问题及其解决方案 MVVM 和语言性能提示:https://msdn.microsoft.com/zh-cn/library/windows/apps/xaml/mt628050. ...
随机推荐
- [置顶] UITableViewCell
UITableViewCellStyle: 四种Cell类型. UITableViewCellSeparatorStyle 分割线类型.(group三种,plain两种) UITableViewCel ...
- TOJ1693(Silver Cow Party)
Silver Cow Party Time Limit(Common/Java):2000MS/20000MS Memory Limit:65536KByte Total Submit: ...
- [PWA] 19. Cache the avatars
Cache the avatars is little different from cache photos. We need to serve the page with our cache da ...
- android 34 ListView进阶
public View getView(int position, View convertView, ViewGroup parent) {////convertView是一个缓存,每次返回一个la ...
- Qt 学习之路 :信号槽
信号槽是 Qt 框架引以为豪的机制之一.熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的技术设计能力. 所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被 ...
- linux共享windows资料
linux 只有NTFS格式不能访问,其的都可以.1.用fdisk -l 查看分区表.2.然后用mount -t vfat /mnt/hda1 /dev/hda1 就可以了./mnt/hda1是一普通 ...
- 你的网站为什么会慢?——用YSlow为你的网站提速
在前面的文章我翻译的文章中分别从内容.服务器.JavaScript和CSS.图片.Coockies和移动应用等几个方面总结了34条提高网站性能的黄金守则,但是这些守则中,有一些是不常用到的,若非有实力 ...
- (转)function($){}(window.jQuery) 是什么意思?
function(){}(); (function(){})(); 这两个是self-invoking anonymous 自调匿名函数,用这类的方法,能强制使匿名函数成为表达式,把不合法变成合法. ...
- JAva Collections类方法详解
http://blog.csdn.net/lskyne/article/details/8961014 Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素 ...
- ssh配置事务
http://blog.csdn.net/jianxin1009/article/details/9202907(不错)