美文网首页
Unity中,游戏内的简易提示文字的显示

Unity中,游戏内的简易提示文字的显示

作者: 全新的饭 | 来源:发表于2023-07-17 13:54 被阅读0次

    示意

    显示提示信息.gif

    使用方式

    在任意处调用

    GameTipsSys.Instance.ShowLog(提示文字内容,显示时长); 
    

    使用说明

    依赖代码:

    1. Unity中,不继承MonoBehaviour的类使用Mono的相关功能
    2. Unity中,专用于GameObject的简易对象池

    需手动在场景中放置一个GameTips。


    GameTipsSys.png
    GameTip.png

    相关代码

    GameTipsSys.cs

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // 在游戏中显示提示文字,一段时间后自动消失。
    // 需主动放置到场景中,只能放置1个。
    public class GameTipsSys : MonoBehaviour
    {
        private static GameTipsSys _instance;
        public static GameTipsSys Instance
        {
            get
            {
                if (_instance == null)
                {
                    var allInstances = FindObjectsOfType<GameTipsSys>();
                    if (allInstances.Length > 0)
                    {
                        for (int i = allInstances.Length - 1; i >= 0; i--)
                        {
                            if (i == 0)
                            {
                                _instance = allInstances[i];
                                _instance.Init();
                            }
                            else
                            {
                                Destroy(allInstances[i]);
                            }
                        }
                    }
                    else
                    {
                        Debug.Log($"获取{nameof(GameTipsSys)}失败!需手动在场景中放置1个!!");
                    }
                }
                return _instance;
            }
        }
    
        [SerializeField]
        private GameTip _tipTemplate;
        private void OnDestroy()
        {
            MyDestroy();
        }
    
        private void Init()
        {
            _tipTemplate.SetActive(false);
        }
        private void MyDestroy()
        {
    
        }
    
        public void ShowLog(string content, float duration = 3)
        {
            var tip = GOPool.Instance.GetInstance(_tipTemplate.gameObject).GetComponent<GameTip>();
            tip.transform.SetParent(transform);
            tip.transform.localPosition = Vector3.zero;
            tip.transform.localScale = Vector3.one;
            tip.Init();
            tip.ShowLog(content);
            tip.SetActive(true);
            MonoSys.Instance.DelayCall(duration, () =>
            {
                tip.MyDestroy();
                GOPool.Instance.RecycleInstance(_tipTemplate.gameObject, tip.gameObject);
            });
        }
    }
    

    GameTip.cs

    using System.Net.Mime;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class GameTip : MonoBehaviour
    {
        [SerializeField]
        private Text _text;
        public void Init()
        {
    
        }
    
        public void MyDestroy()
        {
    
        }
    
        public void ShowLog(string content)
        {
            _text.text = content;
        }
    
        public void SetActive(bool isActive)
        {
            gameObject.SetActive(isActive);
        }
    }
    

    相关文章

      网友评论

          本文标题:Unity中,游戏内的简易提示文字的显示

          本文链接:https://www.haomeiwen.com/subject/utjgudtx.html