服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - Unity实现通用的信息提示框

Unity实现通用的信息提示框

2022-09-16 13:35xiaochenXIHUA C#

这篇文章主要为大家详细介绍了Unity实现通用的信息提示框,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

Unity实现通用的信息提示框

Unity实现通用的信息提示框

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即可出现该信息提示框

Unity实现通用的信息提示框

Unity实现通用的信息提示框

备注:

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
}

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

原文链接:https://blog.csdn.net/xiaochenXIHUA/article/details/81271524

延伸 · 阅读

精彩推荐
  • C#RabbitMQ的配置与安装教程全纪录

    RabbitMQ的配置与安装教程全纪录

    这篇文章主要给大家介绍了关于RabbitMQ的配置与安装的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

    小崔的笔记本4302022-02-25
  • C#C#清理非托管对象实例分析

    C#清理非托管对象实例分析

    这篇文章主要介绍了C#清理非托管对象的方法,结合实例形式详细分析了C#清理非托管对象释放资源的相关原理与实现技巧,需要的朋友可以参考下...

    Microblue7992021-11-14
  • C#C#实现的文件批量重命名功能示例

    C#实现的文件批量重命名功能示例

    这篇文章主要介绍了C#实现的文件批量重命名功能,结合具体实例形式分析了C#针对文件的遍历、属性修改相关操作技巧,需要的朋友可以参考下...

    a7719485247602022-01-12
  • C#c#实现输出的字符靠右对齐的示例

    c#实现输出的字符靠右对齐的示例

    下面小编就为大家分享一篇c#实现输出的字符靠右对齐的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    杨明波(Leo Yang)4102022-02-15
  • C#C#结构体特性实例分析

    C#结构体特性实例分析

    这篇文章主要介绍了C#结构体特性,以实例形式较为详细的分析了C#结构体的功能、定义及相关特性,具有一定参考借鉴价值,需要的朋友可以参考下...

    清清飞扬4882021-10-28
  • C#C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析

    C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析

    这篇文章主要介绍了C#实现获取本地内网(局域网)和外网(公网)IP地址的方法,结合实例形式总结分析了C#获取IP地址相关原理、实现方法与操作注意事项,需要...

    willingtolove7512022-08-29
  • C#C#实现简单的登录界面

    C#实现简单的登录界面

    我们在使用C#做项目的时候,基本上都需要制作登录界面,那么今天我们就来一步步看看,如果简单的实现登录界面呢,本文给出2个例子,由简入难,希望...

    C#教程网10102021-11-03
  • C#C# 封装HtmlHelper组件:BootstrapHelper

    C# 封装HtmlHelper组件:BootstrapHelper

    这篇文章主要介绍了C# 封装HtmlHelper组件之BootstrapHelper 的相关资料,需要的朋友可以参考下...

    C#教程网9842021-12-02