Unity实现通用的信息提示框

本文实例为大家分享了Unity实现信息提示框的具体代码,供大家参考,具体内容如下

1、创建一个信息提示框添加InfoTipsFrameScale脚本(然后将其制作为预制体)

2、编写该信息提示框的控制脚本

/***
* Title:"智慧工厂" 项目
* 主题:全局层:提示框的动画效果
* Description:
* 功能:实现提示框的缩放功能
* Date:2018
* Version:0.1版本
* Author:Coffee
* Modify Recoder:
*/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Global;
using kernal;
using UnityEngine.UI;

namespace View
{
 public class InfoTipsFrameScale : Global_baseScalePopUp
  {
    private ScaleType _ScaleType = ScaleType.Scale;    //缩放类型为Scale
    public Button btnClose;      //关闭按钮
    public Text text_TipsTitle;     //提示框的标题
    public Text text_TipsContent;   //提示框的内容

    private void Start()
    {
      //注册相关按钮
      ResigterBtn();
    }

    //注册按钮
    /// <summary>
    /// 注册相关按钮
    /// </summary>
    public void ResigterBtn()
    {
      if (btnClose != null)
      {
        EventTriggerListener.Get(btnClose.gameObject).onClick += BtnCloseMethod;
      }
    }

    /// <summary>
    /// 缩放基础设置
    /// </summary>
    public void BaseSettings()
 {
      //物体基础缩放设置
      base.needScaleGameObject = this.gameObject.transform;
      base.needScaleGameObject.gameObject.SetActive(false);
      base.needScaleGameObject.localScale = new Vector3(0, 0, 0);

    }

    /// <summary>
    /// 开启缩放
    /// </summary>
    public void StartScale()
    {
      this.gameObject.SetActive(true);
      //物体基础缩放设置
      base.ScaleMenu();
    }

    /// <summary>
    /// 关闭按钮的方法
    /// </summary>
    /// <param name="go"></param>
    private void BtnCloseMethod(GameObject go)
    {
      if (go==btnClose.gameObject)
      {
        //开启缩放
        StartScale();

        //延迟销毁物体
        Destroy(this.gameObject, Global_Parameter.INTERVAL_TIME_0DOT5);
      }
    }

    /// <summary>
    /// 显示提示框的标题、提示信息内容
    /// </summary>
    /// <param name="Tipstitle">提示的标题</param>
    /// <param name="TipsContents">提示的内容</param>
    public void DisplayTipsFrameTextContent(string TipsContents,string Tipstitle = "信息提示")
    {
      if (text_TipsTitle!=null&&text_TipsContent!=null)
      {
        text_TipsTitle.text = Tipstitle;
        text_TipsContent.text = TipsContents;
      }
    }

 }//class_end
}
/***
* Title:"智慧工厂" 项目
* 主题:全局层:信息提示框的启用与隐藏
* Description:
* 功能:实现提示信息框的加载、动画显示与隐藏(单例模式)
* Date:2018
* Version:0.1版本
* Author:Coffee
* Modify Recoder:
*/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using kernal;
using View;

namespace Global
{
 public class InfoTipsFrame
  {
    private static InfoTipsFrame _Instance;    //本类实例
    private Transform _InfoTipsFrame;     //信息提示框

    /// <summary>
    /// 本类实例
    /// </summary>
    /// <returns></returns>
    public static InfoTipsFrame GetInstance()
    {
      if (_Instance==null)
      {
        _Instance = new InfoTipsFrame();
      }
      return _Instance;
    }

    /// <summary>
    /// 显示信息提示框与内容
    /// </summary>
    /// <param name="Tipstitle">提示的标题</param>
    /// <param name="TipsContents">提示的内容</param>
    public void DisplayTipsFrameAndContents(GameObject infoTipsFrameParent, string TipsTitle, string TipsContents)
    {
      //获取到信息提示框且显示
      GetInfoTipFrame(infoTipsFrameParent, true);
      _InfoTipsFrame.GetComponent<InfoTipsFrameScale>().DisplayTipsFrameTextContent(TipsContents, TipsTitle);
    }

    /// <summary>
    /// 获取到信息提示框
    /// </summary>
    /// <param name="infoTipsFrameParent">信息提示框的父物体</param>
    /// <param name="IsEnable">是否启用</param>
    private void GetInfoTipFrame(GameObject infoTipsFrameParent,bool IsEnable)
    {
      _InfoTipsFrame = LoadPrefabs.GetInstance().GetLoadPrefab("TipsFrame/TipsFrame").transform;
      _InfoTipsFrame.parent = infoTipsFrameParent.transform.parent;
      _InfoTipsFrame.localPosition = new Vector3(0, 0, 0);
      _InfoTipsFrame.localScale = new Vector3(1, 1, 1);
      _InfoTipsFrame.gameObject.SetActive(IsEnable);
      if (IsEnable == true)
      {
        _InfoTipsFrame.GetComponent<InfoTipsFrameScale>().BaseSettings();
      }
      _InfoTipsFrame.GetComponent<InfoTipsFrameScale>().StartScale();
    }

  }//class_end
}

3、使用方法

/***
* Title:"XXX" 项目
* 主题:XXX
* Description:
* 功能:XXX
* Date:2017
* Version:0.1版本
* Author:Coffee
* Modify Recoder:
*/

using Global;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace SimpleUIFrame
{
 public class Test_InfoTipsFrame : MonoBehaviour
 {
    public GameObject infoTipsFrameParent;

    void Start()
 {

 }

    private void Update()
    {
      if (Input.GetKeyDown(KeyCode.A))
      {
        //显示信息提示框及其内容
        InfoTipsFrame.GetInstance().DisplayTipsFrameAndContents(infoTipsFrameParent, "信息提示", "不存在上一页数据");
      }
    }

  }
}

将该脚本添加到一个物体上(同时禁用做好的信息提示框),运行点击键盘A即可出现该信息提示框

备注:

1、资源加载方法

/***
* Title:"智慧工厂" 项目
* 主题:资源加载方法
* Description:
* 功能:XXX
* Date:2018
* Version:0.1版本
* Author:Coffee
* Modify Recoder:
*/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace kernal
{
 public class LoadPrefabs
 {
    private static LoadPrefabs _Instance;   //本脚本实例

    /// <summary>
    /// 本类实例
    /// </summary>
    /// <returns></returns>
    public static LoadPrefabs GetInstance()
    {
      if (_Instance==null)
      {
        _Instance = new LoadPrefabs();
      }
      return _Instance;
    }

    /// <summary>
    /// 加载预制体
    /// </summary>
    /// <param name="prefbasName">预制体路径和名称</param>
    /// <returns></returns>
    public GameObject GetLoadPrefab(string prefabsPathAndName)
    {
      //把资源加载到内存中
      Object go = Resources.Load("Prefabs/" + prefabsPathAndName, typeof(GameObject));
      //用加载得到的资源对象,实例化游戏对象,实现游戏物体的动态加载
      GameObject LoadPrefab =UnityEngine.MonoBehaviour.Instantiate(go) as GameObject;

      //Debug.Log("加载的预制体="+LoadPrefab);
      return LoadPrefab;

    }

  }//class_end
}

2、 通用缩放方法

/***
* Title:"医药自动化" 项目
* 主题:实现通用的物体缩放效果(父类)
* Description:
* 功能:实现物体的整体缩放、上下压缩展开、左右压缩展开动画效果
* Date:2017
* Version:0.1版本
* Author:Coffee
* Modify Recoder:
*/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
using kernal;

namespace Global
{
  public class Global_baseScalePopUp : MonoBehaviour
  {

    protected Transform needScaleGameObject;     //需要缩放的物体
    protected float scaleMenuSpeed = 0.5F;      //缩放的移动速度

    private bool _IsScaleMark = false;      //物体缩放的标识 

    protected ScaleType scaleType = ScaleType.None;  //默认缩放的类型

    public IEnumerator StartJudgeScaleType()
    {
      yield return new WaitForSeconds(Global_Parameter.INTERVAL_TIME_0DOT3);

      switch (scaleType)
      {
        case ScaleType.None:
          //_NeedScaleGameObject.localScale = new Vector3(1, 1, 1);
          break;
        case ScaleType.Scale:
          needScaleGameObject.localScale = new Vector3(0, 0, 0);
          break;
        case ScaleType.UpAndDown:
          needScaleGameObject.localScale = new Vector3(1, 0, 1);
          break;
        case ScaleType.LeftAndRight:
          needScaleGameObject.localScale = new Vector3(0, 1, 1);
          break;
        default:
          break;
      }

    }

    /// <summary>
    /// 放大与缩小弹出菜单
    /// </summary>
    public void ScaleMenu()
    {
      if (needScaleGameObject.gameObject != null)
      {
        if (_IsScaleMark == false)
        {
          needScaleGameObject.DOScale(new Vector3(1, 1, 1), scaleMenuSpeed);
          _IsScaleMark = true;

        }
        else
        {
          needScaleGameObject.DOScale(new Vector3(0, 0, 0), scaleMenuSpeed);
          _IsScaleMark = false;
          StartCoroutine("HideGameObject");
        }
      }
      else
      {
        Debug.LogError(GetType() + "/Start()/_NeedScaleGameObject " + needScaleGameObject.gameObject + " 物体不存在请检查!!!");
      }
    }

    /// <summary>
    /// 上下打开弹出菜单
    /// </summary>
    public void UpAndDown()
    {
      if (needScaleGameObject.gameObject != null)
      {
        if (_IsScaleMark == false)
        {
          needScaleGameObject.DOScale(new Vector3(1, 1, 1), scaleMenuSpeed);
          _IsScaleMark = true;

        }
        else
        {
          needScaleGameObject.DOScale(new Vector3(1, 0, 1), scaleMenuSpeed);
          _IsScaleMark = false;
          StartCoroutine("HideGameObject");
        }
      }
      else
      {
        Debug.LogError(GetType() + "/Start()/_NeedScaleGameObject " + needScaleGameObject.gameObject + " 物体不存在请检查!!!");
      }

    }

    /// <summary>
    /// 左右打开弹出菜单
    /// </summary>
    public void leftAndRight()
    {
      if (needScaleGameObject.gameObject != null)
      {
        if (_IsScaleMark == false)
        {
          needScaleGameObject.DOScale(new Vector3(1, 1, 1), scaleMenuSpeed);
          _IsScaleMark = true;

        }
        else
        {
          needScaleGameObject.DOScale(new Vector3(0, 1, 1), scaleMenuSpeed);
          _IsScaleMark = false;
          StartCoroutine("HideGameObject");
        }
      }
      else
      {
        Debug.LogError(GetType() + "/Start()/_NeedScaleGameObject " + needScaleGameObject.gameObject + " 物体不存在请检查!!!");
      }

    }

    /// <summary>
    /// 隐藏游戏物体
    /// </summary>
    IEnumerator HideGameObject()
    {
      yield return new WaitForSeconds(scaleMenuSpeed);
      needScaleGameObject.gameObject.SetActive(false);
    }

    /// <summary>
    /// 基础面板设置
    /// </summary>
    /// <param name="needScaleGo">需要缩放的物体</param>
    /// <param name="scaleType">物体缩放类型</param>
    /// <param name="scaleSpeed">缩放的速度</param>
    public void BasePanelSettings( GameObject needScaleGo,ScaleType scaleType, float scaleSpeed=0.3F)
    {
      //默认隐藏右侧内容区域
      if (needScaleGo != null)
      {
        needScaleGo.SetActive(false);

        //指定弹出菜单
        needScaleGameObject = needScaleGo.transform;
        //指定需要弹出菜单执行的动画类型
        this.scaleType = scaleType;
        StartCoroutine(StartJudgeScaleType());

        //物体缩放的速度
        scaleMenuSpeed = scaleSpeed;

      }
      else
      {
        Log.Write(GetType() + "/BtnOnClickEvent()/使用手册面板中按钮点击对应的面板右侧内容不存在,请检查" + needScaleGo + "物体");
      }
    }

  }//class_end
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity实现通用的信息提示框

    本文实例为大家分享了Unity实现信息提示框的具体代码,供大家参考,具体内容如下 1.创建一个信息提示框添加InfoTipsFrameScale脚本(然后将其制作为预制体) 2.编写该信息提示框的控制脚本 /*** * Title:"智慧工厂" 项目 * 主题:全局层:提示框的动画效果 * Description: * 功能:实现提示框的缩放功能 * Date:2018 * Version:0.1版本 * Author:Coffee * Modify Recoder: */ using

  • jquery插件珍藏(图片局部放大/信息提示框)

    1.图片局部放大 jQZoom Evolution (演示 | 下载) 2.信息提示框

  • jQuery实现信息提示框(带有圆角框与动画)效果

    本文实例讲述了jQuery实现信息提示框效果.分享给大家供大家参考.具体如下: 一个jquery提示框特效,黑色风可,且提示框是圆角形状,点击页面中间的几个文字,提示框信息就会动态显示,CSS和JS部分代码比较多. 先来看看运行效果如下: 具体代码如下: <!DOCTYPE html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&

  • PHP快速生成各种信息提示框的方法

    本文实例讲述了PHP快速生成各种信息提示框的方法.分享给大家供大家参考,具体如下: function ShowMsg($msg, $gourl, $onlymsg = 0, $limittime = 0) //系统提示信息 { /* *$msg 信息提示的内容 *$gourl 需要跳转的网址 *$onlymsg 1 表示不自动跳转 0表示自动跳转 *$limittime 跳转的时间 */ global $dsql, $cfg_ver_lang; if (eregi ( "^gb", $

  • 使用Tkinter制作信息提示框

    Tkinter是python的GUI模块,内含各种窗口控件,利用其中messagbox可以制作各种信息弹出窗口. 以下是制作信息提示框的代码: import tkinter as tk import tkinter.messagebox def show_warning(msg): tk.messagebox.showwarning("提示", msg) if __name__ == '__main__': show_warning('这是一个信息提示示例') 这段代码存在一个问题,就

  • javascript中常见的3种信息提示框(alert,prompt,confirm)

    1.警告提示框 alert("文本"). ex. function disp_alert() { alert("我是警告框!!"+'\n'+"hhah")//有折行 } [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 2.确认提示框(confirm,返回true或者false) function show_confirm() { var r=confirm("Press a button!"); if (r==tr

  • AlertBox 弹出层信息提示框效果实现步骤

    在仿Lightbox效果中,已经基本实现了这个效果,这次主要改进了ie6在fixed时的抖动问题. 此外,还增加了一个用来兼容ie6的fixed的方法,覆盖层也重新"包装",程序也改成组件的结构. 兼容:ie6/7/8, firefox 3.6.8, opera 10.6, safari 5.0.1, chrome 5.0 效果预览 http://demo.jb51.net/js/AlertBox/index.htm 程序说明 [实现原理] 弹出层的基本原理在仿Lightbox效果中已

  • Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法

    今天又回顾了一下这个插件,然后发现它在IE6下面工作的时候,显示起来是不正常的,tip经常出现在很离谱的位置.问题还有,由于tip的显示效果没有用到任何图像,都是纯的CSS,所以里面用CSS实现的三角形在IE6下是无法工作的,会显示一块有色区域,很丑,所以我就想动手改它一下.先上一张对比图好了: js方面的代码肯定是没问题的,问题出CSS上,Colortip用的是position进行定位,在IE6下面可能存在着一点问题.而且由于IE6不支持border-color:transparent的属性,

  • Js 订制自己的AlertBox(信息提示框)

    本文制作一个用户自定义的AlertBox,效果如图:js文件中插入如下代码: 复制代码 代码如下: // JScript 文件 // constants to define the title of the alert and button text. var ALERT_TITLE = "Oops!"; var ALERT_BUTTON_TEXT = "Close"; // over-ride the alert method only if this a new

  • JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)

    js中输出信息的方法内容如下所示: 1.文档流输出 document.write('hello'); 2.输出信息提示框 模态对话框 window.alert('要输出显示的内容'); 或 alert('要输出显示的内容'); alert(n); 3.信息确认框 var f = window.confirm('是否要进入新浪网'); confirm(""); if(f){ location.href = 'http://www.sina.com.cn'; } 4.提示输入框 windo

随机推荐