【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 教程 » 操作系统 » 正文

游戏广播走马灯可循环可插入

放大字体  缩小字体 发布日期:2022-06-30 18:03:31    浏览次数:5

应朋友要求帮忙写的一个游戏广播走马灯程序,可以循环播放单条消息的次数也可以插入消息优先播放,废话不多说直接上代码,(这里只是基本的功能实现,具体封装自己去封装了,我就不封装了,也是对你们的锻炼,哈哈)

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using System;enum CirculationType{    Single,    Circulation,    Insertion,}class Item{    public Item(string pText, int pCount)    {        m_pText = pText;        Count = pCount;    }    public string m_pText;    public int Count;}public class NewBehaviourscript : MonoBehaviour{    /// <summary>    /// 公告跑马灯    /// </summary>    public Text NoticeText;    public Vector3 Speed = new Vector3(2, 0, 0);    public float _MoveEndPoint;    public Vector2 _MoveStartPoint;    public float _ParentWidth;    public float _SelfWidth;    public Button button;    private int spe = 3;    string pname;    List<string> pName;    bool m_bCirculation;    bool m_bInsertion;    bool m_bRun=true;    int m_nRun = 0;    Queue<Item> GetVs = new Queue<Item>();    /// <summary>    /// 土豪数据 先进后出    /// </summary>    Stack<Item> GetStack = new Stack<Item>();    public event Action m_pUpdateQueueText;    public event Action m_pUpdateStackText;    private void Start()    {        GetVs.Enqueue(new Item("元素1222222222222222222222222222222222222222222222222222222222222", 0));        GetVs.Enqueue(new Item("元素233333333333333333333333333333333333333333333333333333333333", 2));//2  3        GetVs.Enqueue(new Item("元素344444444444444444444444444444444444444444444444444444444444", 3));//3  4        GetVs.Enqueue(new Item("元素35555555555555555555555555555555555555555555555555555555555", 0));        GetQueueText();        RegisterBroadcast();        m_pUpdateQueueText += GetQueueText;        m_pUpdateStackText += GetStackText;        button.onClick.AddListener(delegate ()        {            GetStack.Push(new Item("土豪充值:百万!!!!!!!! 这个是超级土豪!!!!! 大家欢迎!!!!", 3));        });    }    /// <summary>    /// 注册 公告,便于刷新    /// </summary>    /// <param name="text"></param>    void RegisterBroadcast()    {        _ParentWidth = NoticeText.transform.parent.GetComponent<RectTransform>().rect.width;        _SelfWidth = NoticeText.preferredWidth;        NoticeText.transform.GetComponent<RectTransform>().pivot = new Vector2(0, 0.5f);        _MoveEndPoint = -_ParentWidth / 2 - _SelfWidth;        _MoveStartPoint = new Vector2(_ParentWidth / 2, 0);    }    private void FixedUpdate()    {        if (GetStack.Count == 0 && GetVs.Count == 0)        {            if (m_bRun)            {                m_nRun++;                m_bRun = false;                Debug.LogError("ddd");            }        }        else        {            m_bRun = true;        }        if (m_nRun >=2) return;        m_bInsertion = GetStack.Count != 0 ? true : false;        // 公告移动        if (NoticeText.gameObject.activeInHierarchy)        {            NoticeText.transform.localPosition -= Speed;            if (NoticeText.transform.localPosition.x <= _MoveEndPoint)            {                NoticeText.transform.localPosition = _MoveStartPoint;                if (m_nRun == 1) m_nRun++;                m_bCirculation = spe > 0 ? true : false;                if (m_bCirculation)                    spe--;                if (m_bInsertion)                {                    if (m_pUpdateStackText != null)                        m_pUpdateStackText();                }                else                {                    if (m_pUpdateQueueText != null && GetVs.Count != 0 && !m_bCirculation)                    {                        m_pUpdateQueueText();                    }                }            }        }    }    /// <summary>    /// 获取下一条    /// </summary>    /// <returns></returns>    public void GetQueueText()    {        Item item = GetVs.Dequeue();        NoticeText.text = item.m_pText;        spe = item.Count - 1;    }    public void GetStackText()    {        Item item = GetStack.Pop();        NoticeText.text = item.m_pText;        spe = item.Count - 1;    }}

我这里是使用 栈队和事件完成的,有什么好的建议可以留言,(其实这个代码还可以优化,只是没时间去改了,有兴趣的同学可以自己拿去优化试试~)。

下面是执行效果 :
顺序播放

插入 

 
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:https://www.31duo.com/news/show-3574097.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4