Unity实现通用的信息提示框

2020-06-21 18:59:53王旭

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
}