(三十)unity4.6学习Ugui中文文档-------制作一个泛型的MODAL窗口
来源:互联网 发布:数据对比ppt模板下载 编辑:程序博客网 时间:2024/06/06 09:36
孙广东 2015.5.11
在此文章中我们将制作一个泛型的MODAL窗口 (Yes, No, Maybeso, Cancel) 在那里我们可以把内容和动作push到窗口中,这个窗口可以在我们的游戏的任何地方使用,按钮被按下时事件工作。
涉及到的代码:
using UnityEngine;using System.Collections;public class BringToFront : MonoBehaviour {void OnEnable () {transform.SetAsLastSibling ();}}
using UnityEngine;using UnityEngine.UI;using UnityEngine.Events;using System.Collections;// This script will be updated in Part 2 of this 2 part series.public class ModalPanel : MonoBehaviour {public Text question;public Image iconImage;public Button yesButton;public Button noButton;public Button cancelButton;public GameObject modalPanelObject;private static ModalPanel modalPanel;public static ModalPanel Instance () {if (!modalPanel) {modalPanel = FindObjectOfType(typeof (ModalPanel)) as ModalPanel;if (!modalPanel)Debug.LogError ("There needs to be one active ModalPanel script on a GameObject in your scene.");}return modalPanel;}// Yes/No/Cancel: A string, a Yes event, a No event and Cancel eventpublic void Choice (string question, UnityAction yesEvent, UnityAction noEvent, UnityAction cancelEvent) {modalPanelObject.SetActive (true);yesButton.onClick.RemoveAllListeners();yesButton.onClick.AddListener (yesEvent);yesButton.onClick.AddListener (ClosePanel);noButton.onClick.RemoveAllListeners();noButton.onClick.AddListener (noEvent);noButton.onClick.AddListener (ClosePanel);cancelButton.onClick.RemoveAllListeners();cancelButton.onClick.AddListener (cancelEvent);cancelButton.onClick.AddListener (ClosePanel);this.question.text = question;this.iconImage.gameObject.SetActive (false);yesButton.gameObject.SetActive (true);noButton.gameObject.SetActive (true);cancelButton.gameObject.SetActive (true);}void ClosePanel () {modalPanelObject.SetActive (false);}}
using UnityEngine;using UnityEngine.UI;using System.Collections;public class DisplayManager : MonoBehaviour {public Text displayText;public float displayTime;public float fadeTime;private IEnumerator fadeAlpha;private static DisplayManager displayManager;public static DisplayManager Instance () {if (!displayManager) {displayManager = FindObjectOfType(typeof (DisplayManager)) as DisplayManager;if (!displayManager)Debug.LogError ("There needs to be one active DisplayManager script on a GameObject in your scene.");}return displayManager;}public void DisplayMessage (string message) {displayText.text = message;SetAlpha ();}void SetAlpha () {if (fadeAlpha != null) {StopCoroutine (fadeAlpha);}fadeAlpha = FadeAlpha ();StartCoroutine (fadeAlpha);}IEnumerator FadeAlpha () {Color resetColor = displayText.color;resetColor.a = 1;displayText.color = resetColor;yield return new WaitForSeconds (displayTime);while (displayText.color.a > 0) {Color displayColor = displayText.color;displayColor.a -= Time.deltaTime / fadeTime;displayText.color = displayColor;yield return null;}yield return null;}}
using UnityEngine;using UnityEngine.UI;using UnityEngine.Events;using System.Collections;// This script will be updated in Part 2 of this 2 part series.public class TestModalWindow : MonoBehaviour {private ModalPanel modalPanel;private DisplayManager displayManager;private UnityAction myYesAction;private UnityAction myNoAction;private UnityAction myCancelAction;void Awake () {modalPanel = ModalPanel.Instance ();displayManager = DisplayManager.Instance ();myYesAction = new UnityAction (TestYesFunction);myNoAction = new UnityAction (TestNoFunction);myCancelAction = new UnityAction (TestCancelFunction);}// Send to the Modal Panel to set up the Buttons and Functions to callpublic void TestYNC () {modalPanel.Choice ("Do you want to spawn this sphere?", TestYesFunction, TestNoFunction, TestCancelFunction);// modalPanel.Choice ("Would you like a poke in the eye?\nHow about with a sharp stick?", myYesAction, myNoAction, myCancelAction);}// These are wrapped into UnityActionsvoid TestYesFunction () {displayManager.DisplayMessage ("Heck yeah! Yup!");}void TestNoFunction () {displayManager.DisplayMessage ("No way, José!");}void TestCancelFunction () {displayManager.DisplayMessage ("I give up!");}}
说说别的:
Resolution & Device Independence
PlayerSettings :
iPhone6 Plus:具备1920x1080分辨率
在一个比例下的分辨率通过 牟定的概念可以 打开适配,如16:9
明显在四个角落上的元素直接牟定在对应的脚上即可!
正中间就定在正中间。
上下左右就定在对应的上下左右。
但是屏幕变小时依然会出现很大的问题:
接下来要登场的是:Canvas Scaler 组件
这样,当屏幕大小发生变化后,UI不再是简单的牟定了,会随着变大变小。
Creating a Scene Selection Menu场景更改后要切换声音:MonoBehaviour中的 void OnLevelWasLoaded(int level) { if (level == 2) { source.clip = level2Music; source.Play (); } }异步加载场景:using UnityEngine;using System.Collections;using UnityEngine.UI;public class ClickToLoadAsync : MonoBehaviour { public Slider loadingBar; public GameObject loadingImage; private AsyncOperation async; public void ClickAsync(int level) { loadingImage.SetActive(true); StartCoroutine(LoadLevelWithBar(level)); } IEnumerator LoadLevelWithBar (int level) { async = Application.LoadLevelAsync(level); while (!async.isDone) { loadingBar.value = async.progress; yield return null; } }}
1 1
- (三十)unity4.6学习Ugui中文文档-------制作一个泛型的MODAL窗口
- (二十七)unity4.6学习Ugui中文文档-------Unity3D UI (uGUI)窗口扩展
- (十九)unity4.6学习Ugui中文文档-------交互-EventSystem
- (二十四)unity4.6学习Ugui中文文档-------在unity4.6之前使用UnityEvent
- (二十六)unity4.6学习Ugui中文文档-------UGUI的开源Tween工具轻量而强大
- (十二)unity4.6学习Ugui中文文档-------参考-UGUI Interaction Components(上)
- (十三)unity4.6学习Ugui中文文档-------参考-UGUI Interaction Components(下)
- (九)unity4.6学习Ugui中文文档-------参考-UGUI Rect Transform
- (十)unity4.6学习Ugui中文文档-------参考-UGUI Canvas Components
- (十一)unity4.6学习Ugui中文文档-------参考-UGUI Visual Components
- (十四)unity4.6学习Ugui中文文档-------参考-UGUI Auto Layout
- (二十五)unity4.6学习Ugui中文文档-------UGUI-Extensions
- (二十八)unity4.6学习Ugui中文文档-------uGui Effect Tool
- unity4.6学习Ugui中文文档-------交互-EventSys
- (一)unity4.6Ugui中文教程文档-------概要
- (十五)unity4.6学习Ugui中文文档-------技巧-Designing UI for Multiple Resolutions
- (十七)unity4.6学习Ugui中文文档-------技巧-Creating a World Space UI
- (十八)unity4.6学习Ugui中文文档-------技巧-Creating UI elements from scripting
- GetRows 方法范例 (VB)
- LeetCode的medium题集合(C++实现)二
- 黑马程序员__System类以及File类
- 105 css选择器的深入 $("#div div div p")
- 【转载】Java对象的序列化和反序列化
- (三十)unity4.6学习Ugui中文文档-------制作一个泛型的MODAL窗口
- Java同步、异步相关知识点
- 替换空格
- PKU C++程序设计实习 学习笔记6 标准模板库STL
- struts2的单例多例问题
- Mysql 社区版
- SpagoBI连接SQLSERVER2008
- 配置Struts的核心过滤器
- C Primer Plus 第十一章 习题总结……2015.5.10