11.排行榜界面

  1. 11.开始场景-排行榜界面
    1. 11.1 知识点
      1. 创建排行榜面板空物体,拼接控件
      2. 创建排行榜面板脚本
    2. 11.2 知识点代码

11.开始场景-排行榜界面


11.1 知识点

创建排行榜面板空物体,拼接控件

在Unity中创建一个空物体,并在其下添加排行榜面板所需的控件,如标签、按钮等。

创建排行榜面板脚本

//排行榜面板
public class RankPanel : BasePanel<RankPanel>
{
    //关闭按钮控件对象
    public CustomGUIButton btnClose;
    
    //创建排行榜遍历相关的list
    private List<CustomGUILabel> labName = new List<CustomGUILabel>();
    private List<CustomGUILabel> labScore = new List<CustomGUILabel>();
    private List<CustomGUILabel> labTime = new List<CustomGUILabel>();
        
    void Start()
    {
        //遍历添加子对象的GUI脚本到list中
        for (int i = 1; i <= 10 ; i++)
        {
            //Find不特殊处理的话只能找到下一层的子对象
            //小知识应用 找子对象的子对象 可以通过 斜杠来区分父子关系
            labName.Add(this.transform.Find("Name/labName" + i).GetComponent<CustomGUILabel>());
            labScore.Add(this.transform.Find("Score/labScore" + i).GetComponent<CustomGUILabel>());
            labTime.Add(this.transform.Find("Time/labTime" + i).GetComponent<CustomGUILabel>());
        }
    
        //处理事件监听逻辑
        btnClose.clickEvent += () =>
        {
            HideMe();
            BeginPanel.Instance.ShowMe();
        };
    
        //开始时隐藏排行榜面板
        HideMe();
    }
    
    //重写显示面板函数,更新排行榜信息
    public override void ShowMe()
    {
        base.ShowMe();
        UpdatePanelInfo();
    }
    
    //更新排行榜信息函数
    public void UpdatePanelInfo()
    {
        //待补充刷新排行榜逻辑
    }
}

关闭按钮的点击事件会隐藏排行榜面板并显示开始面板。UpdatePanelInfo 函数用于更新排行榜信息,待补充具体逻辑。


11.2 知识点代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//排行榜面板
public class RankPanel : BasePanel<RankPanel>
{
    //关闭按钮控件对象
    public CustomGUIButton btnClose;

    //创建排行榜遍历相关的list
    //因为控件较多 拖的话 工作量太大了 我们直接偷懒 通过代码找
    private List<CustomGUILabel> labName = new List<CustomGUILabel>();
    private List<CustomGUILabel> labScore = new List<CustomGUILabel>();
    private List<CustomGUILabel> labTime = new List<CustomGUILabel>();
    
    void Start()
    {
        //遍历添加子对象的GUI脚本到list中
        for (int i = 1; i <= 10 ; i++)
        {
            //Find不特殊处理的话只能找到下一层的子对象
            //小知识应用 找子对象的子对象 可以通过 斜杠来区分父子关系
            labName.Add(this.transform.Find("Name/labName" + i).GetComponent<CustomGUILabel>());
            labScore.Add(this.transform.Find("Score/labScore" + i).GetComponent<CustomGUILabel>());
            labTime.Add(this.transform.Find("Time/labTime" + i).GetComponent<CustomGUILabel>());
        }

        //处理事件监听逻辑
        btnClose.clickEvent += () =>
        {
            HideMe();
            BeginPanel.Instance.ShowMe();
        };

        //加入的测试代码 看看数据添加成功与否
        //GameDataMgr.Instance.AddRankInfo("测试数据", 100, 8432);

        //开始时隐藏旁边面板
        HideMe();
    }

    //重写显示面板函数,更新排行榜信息
    public override void ShowMe()
    {
        base.ShowMe();
        UpdatePanelInfo();
    }

    //更新排行榜信息函数
    public void UpdatePanelInfo()
    {
        //处理根据排行榜数据 更新面板
        //获取 GameDataMgr中的排行榜列表 用于在这里更新
        //得数据
        List<RankInfo> list = GameDataMgr.Instance.rankData.list;
        //根据列表更新面板数据
        for (int i = 0; i < list.Count; i++)
        {
            //名字
            labName[i].content.text = list[i].name;
            //分数
            labScore[i].content.text = list[i].score.ToString();
            //时间 存储的时间单位是s
            //把秒数 转换成 时  分 秒
            int time = (int)list[i].time;
            labTime[i].content.text = "";
            //得到 几个小时
            // 8432s  60*60 = 3600
            //8432 / 3600 ≈ 2时
            if ( time / 3600 > 0 )
            {
                labTime[i].content.text += time / 3600 + "时";
            }
            //8432-7200 余 1232s
            // 1232s / 60 ≈ 20分  
            if ( time % 3600 / 60 > 0 || labTime[i].content.text != "")
            {
                labTime[i].content.text += time % 3600 / 60 + "分";
            }
            //1232s-1200 余 32秒 直接取余60即可
            labTime[i].content.text += time % 60 + "秒";
        }
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏