Unity小实用七-简单的MessageBox

这篇博客介绍了一个简单的 MessageBox 类实现,用于在 Unity 开发中展示弹窗提示。通过调用 DisplayMessageBox 函数,传入标题、内容、是否可关闭及关闭后的操作即可轻松弹窗。代码示例展示了如何创建和销毁 MessageBox 对象,以及处理关闭按钮的事件。提供的弹窗预制体可以在工程中复用,以满足日常开发需求。
摘要由CSDN通过智能技术生成

在工作的开发中,比如请求失败了,需要弹窗告知用户。自己就搞了个简单的MessageBox。能够满足我日常的弹窗要求。

使用方法就很简单,就一行代码就能够弹窗。

    /// <summary>

    /// 弹窗接口

    /// </summary>

    /// <param name="title">弹窗的标题</param>

    /// <param name="body">弹窗的具体信息</param>

    /// <param name="dismissable">是否需要关闭按钮</param>

    /// <param name="dismissAction">关闭按钮后续的操作</param>

public static void DisplayMessageBox(string title, string body, bool dismissable, Action dismissAction);

在每次需要弹窗的地方,调用这个函数就可以弹窗了。

弹窗脚本具体的代码如下:

using System;

using UnityEngine;

using UnityEngine.UI;



public class MessageBox : MonoBehaviour

{

    #region PRIVATE_MEMBERS

    Text[] textComponents;

    delegate void DelegateMessageBoxButtonAction();

    DelegateMessageBoxButtonAction m_DelegateMessageBoxAction;

    #endregion // PRIVATE_MEMBERS





    #region PUBLIC_METHODS



    /// <summary>

    /// 弹窗接口

    /// </summary>

    /// <param name="title">弹窗的标题</param>

    /// <param name="body">弹窗的具体信息</param>

    /// <param name="dismissable">是否需要关闭按钮</param>

    /// <param name="dismissAction">关闭按钮后续的操作</param>

    public static void DisplayMessageBox(string title, string body, bool dismissable, Action dismissAction)

    {

        GameObject prefab = (GameObject)Resources.Load("MessageBox");

        if (prefab)

        {

            MessageBox messageBox = Instantiate(prefab.GetComponent<MessageBox>());

            messageBox.Setup(title, body, dismissable, dismissAction);

        }

    }



    public void MessageBoxButton()

    {

        // This method called by the UI Canvas Button



        // If there's a custom method, run it first

        if (m_DelegateMessageBoxAction != null)

        {

            m_DelegateMessageBoxAction();

        }



        // Destroy MessageBox

        Destroy(gameObject);

    }



    #endregion // PUBLIC_METHODS





    #region PRIVATE_METHODS



    void Setup(string title, string body, bool dismissable = true, Action closeButton = null)

    {

        textComponents = GetComponentsInChildren<Text>();



        if (textComponents.Length >= 2)

        {

            textComponents[0].text = title;

            textComponents[1].text = body;

        }



        if (closeButton != null)

            m_DelegateMessageBoxAction = new DelegateMessageBoxButtonAction(closeButton);



        Button button = GetComponentInChildren<Button>();

        if (button != null)

            button.gameObject.SetActive(dismissable);

    }



    #endregion // PRIVATE_METHODS

}

我们看到这行代码,需要加装预制体。

GameObject prefab = (GameObject)Resources.Load("MessageBox");

具体的弹窗效果如下:

整个工程我已经放到我的资源中,请大家去下载使用哦。点击下载

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XR风云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值