Unity坦克大战开发全流程——开始场景——排行榜数据逻辑

开始场景——排行榜数据逻辑

排行榜单条数据

排行榜列表

然后在数据管理类中声明一个对应的字段

初始化数据

然后再在上一节课所编写的UpdatePanelInfo函数中处理数据更新的逻辑

时间换算算法

然后再在数据管理类中编写一个在排行榜中添加数据的方法以提供给外部

 直到当前RankInfo、GameDataMgr、RankPanel的代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;/// <summary>
/// 单条排行榜信息
/// </summary>
public class RankInfo 
{public string name;public int score;public int time;public RankInfo(string name, int score, int time){this.name = name;this.score = score;this.time = time;}public RankInfo(){}
}/// <summary>
/// 排行榜列表
/// </summary>
public class RankList
{public List<RankInfo> list;
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GameDataMgr 
{private static GameDataMgr instance = new GameDataMgr();public static GameDataMgr Instance{get { return instance; }}public MusicData musicData;public RankList rankData;private GameDataMgr(){//初始化数据musicData = PlayerPrefsDataMgr.Instance.LoadData(typeof(MusicData), "Music") as MusicData;rankData = PlayerPrefsDataMgr.Instance.LoadData(typeof(RankList), "Music") as RankList;//判断是否是第一次进入游戏,如果是第一次,那么就通过代码来手动初始化数据if (!musicData.notFirst){musicData.notFirst = true;musicData.isOpenBK = true;musicData.isOpenSound = true;musicData.bkValue = 1;musicData.soundValue = 1;//储存数据PlayerPrefsDataMgr.Instance.SaveData(musicData, "Music");}}//以下是提供给外部用于注册事件的函数//开关背景音乐public void OpenOrCloseBKMisic(bool isOpen){musicData.isOpenBK = isOpen;BKMusic.Instance.ChangeOpen(isOpen);PlayerPrefsDataMgr.Instance.SaveData(musicData, "Music");        }//开关音效public void OpenOrCloseSound(bool isOpen){musicData.isOpenSound = isOpen;PlayerPrefsDataMgr.Instance.SaveData(musicData, "Music");}//改变背景音乐的大小public void ChangeBKValue(float value){musicData.bkValue = value;BKMusic.Instance.ChangeValue(value);PlayerPrefsDataMgr.Instance.SaveData(musicData, "Music");}//改变背景音效的大小public void ChangeSoundValue(float value){musicData.soundValue = value;PlayerPrefsDataMgr.Instance.SaveData(musicData, "Music");}//添加排行榜信息public void AddRankInfo(string name, int score, int time){rankData.list.Add(new RankInfo(name, score, time));rankData.list.Sort((a, b) => a.time < b.time ? -1 : 1);for (int i = rankData.list.Count - 1; i >= 3; i--){rankData.list.RemoveAt(i);}PlayerPrefsDataMgr.Instance.SaveData(rankData, "Rank");}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SocialPlatforms.Impl;public class RankPanel : BasePanel<RankPanel>
{public CustomGUIButton btnClose;//利用列表来储存文本控件对应的脚本信息private List<CustomGUILabel> labPM = new List<CustomGUILabel>();private List<CustomGUILabel> labPlayer = new List<CustomGUILabel>();private List<CustomGUILabel> labScore = new List<CustomGUILabel>();private List<CustomGUILabel> labTime = new List<CustomGUILabel>();void Start(){HideMe();btnClose.clickEvent += () =>{HideMe();BeginPanle.Instance.ShowMe();};//为列表填充信息for (int i = 1; i <= 3; i++){labPM.Add(transform.Find("PM/labPM" + i).GetComponent<CustomGUILabel>());labPlayer.Add(transform.Find("Player/labPlayer" + i).GetComponent<CustomGUILabel>());labScore.Add(transform.Find("Score/labScore" + i).GetComponent<CustomGUILabel>());labTime.Add(transform.Find("Time/labTime" + i).GetComponent<CustomGUILabel>());}}//更新面板的信息public void UpdatePanelInfo(){List<RankInfo> list = GameDataMgr.Instance.rankData.list;for (int i = 0; i < list.Count; i++){labPlayer[i].content.text = list[i].name;labScore[i].content.text = list[i].score.ToString();labTime[i].content.text = list[i].time.ToString();}}//重写虚函数public override void ShowMe(){base.ShowMe();UpdatePanelInfo();}}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【BERT】深入理解BERT模型1——模型整体架构介绍

前言 BERT出自论文&#xff1a;《BERT&#xff1a;Pre-training of Deep Bidirectional Transformers for Language Understanding》 2019年 近年来&#xff0c;在自然语言处理领域&#xff0c;BERT模型受到了极为广泛的关注&#xff0c;很多模型中都用到了BERT-base或者是BE…

搜索算法和推荐算法、广告算法的区别

广告和推荐算法的技术框架比较相似&#xff0c;在线计算时都分为召回&#xff08;candidates generating&#xff09;和排序&#xff08;candidates ranking&#xff09;两个阶段&#xff08;这似乎是计算资源有限条件下&#xff0c;所有检索问题的通用架构&#xff09;。 在某…

RabbitMQ详解

RabbitMQ 概念 RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 AMQP &#xff1a;Advanced Message Queue&#xff0c;高级消息队列协议。它是应用层协议的一个开放标准&#xff0c;为面向消息的中间件设计&#xff0c;基于此协议的客户端与消息中间件可传递消息&a…

2023年全国网络安全行业职业技能大赛数据安全管理员操作技能赛题(样题)

2023年全国网络安全行业职业技能大赛数据安全管理员操作技能赛题(样题) 2023年全国网络安全行业职业技能大赛数据安全管理员操作技能赛题(样题) 第一部分&#xff1a;数据安全防护(30%) 第二部分&#xff1a;数据安全管理(30%) 第三部分&#xff1a;数据安全处置(40%) 项目介绍…

【JavaEE】多线程(7) -- 线程池的概念和简单实现

目录 1.线程池是什么 2.标准库中的线程池 2.1ThreadPoolExecutor 2.2构造方法参数介绍 2.3拒绝策略(面试易考) 2.4Executor的使用 3.实现线程池 1.线程池是什么 线程池是一种用来管理线程的机制&#xff0c;它可以有效地控制线程的创建、复用和销毁&#xff0c;从而提高程…

程序的编译、链接

目录 前言&#xff1a; 前置知识回顾 宏 宏定义常量 宏定义语句 宏定义函数 条件编译 应用场景 编译过程概览 预编译阶段 编译阶段 汇编阶段 链接阶段 前言&#xff1a; 在ANSI C的任何一种实现中&#xff0c;存在两种不同的环境&#xff0c;第1种是翻译环境&#x…

GPT-5、开源、更强的ChatGPT!OpenAI公布2024年计划

年终岁尾&#xff0c;正值圣诞节热闹气氛的OpenAI写下了2024年的发展清单。 OpenAI联合创始人兼首席执行官Sam Altman在社交平台公布&#xff0c;AGI&#xff08;稍晚一些&#xff09;、GPT-5、更好的语音模型、更高的费率限制&#xff1b; 更好的GPTs&#xff1b;更好的推理…

大数据- Hadoop入门

目录 &#x1f436;2.1 hadoop的简介 1. 概述 2. 什么是分布式&#xff1f; 3. Hadoop的指代 &#x1f436;2.2 hadoop的发展历程 &#x1f436;2.3 hadoop的版本介绍 &#x1f436;2.4 hadoop的常用端口号 &#x1f436;2.5 hadoop的设计目的 &#x1f436;2.6 hadoo…

Java集合/泛型篇----第二篇

系列文章目录 文章目录 系列文章目录前言一、说说List,Set,Map三者的区别二、Array与ArrayList有什么不一样?三、Map有什么特点四、集合类存放于 Java.util 包中, 主要有几 种接口前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。…

upload-labs Pass-03(黑名单验证,特殊后缀)问题纠正

php任何后缀名解析 背景&#xff1a;为了验证php解析不依靠后缀名&#xff0c;可以是任何后缀名&#xff0c;纠正upload-labs Pass-03&#xff08;黑名单验证&#xff0c;特殊后缀&#xff09;里所说的几个固定的后缀名理论是错误的。1 部署1.1 环境准备1.1.1 系统、内核&#…

【音视频 ffmpeg 学习】 跑示例程序 持续更新中

环境准备 在上一篇文章 把mux.c 拷贝到main.c 中 使用 attribute(unused) 消除警告 __attribute__(unused)/** Copyright (c) 2003 Fabrice Bellard** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated docu…

计算机毕业设计-----ssm流浪狗领养系统

项目介绍 我国的动物管理正处于起步阶段&#xff0c;注册在线的宠物数量非常有限&#xff0c;信息也很封闭&#xff0c;因此必须发挥民间力量扩容&#xff0c;加强宠物信息的宣传力度&#xff0c;使更多爱护动物的好心人可以领养宠物&#xff0c;同时也就收纳有家宠物信息&…

Efficient Classification of Very Large Images with Tiny Objects(CVPR2022补1)

文章目录 Two-stage Hierarchical Attention SamplingOne-stageTwo-Stage内存需求 Efficient Contrastive Learning with Attention Sampling Two-stage Hierarchical Attention Sampling 一阶段缩放是hw&#xff0c;提取的特征是h1w1&#xff0c; 二阶段缩放是uv&#xff08;…

iPortal内置Elasticsearch启动失败的几种情况——Linux

作者&#xff1a;yx 文章目录 前言一、端口占用二、ES启动过慢三、磁盘占用过高&#xff0c;导致ES变为只读模式 前言 在Linux环境启动iPortal后有时会出现搜索异常的情况&#xff0c;如下截图&#xff0c;这是因为Elasticsearch&#xff08;以下简称“ES”&#xff09;没启动…

共享单车之数据可视化

文章目录 第1关&#xff1a;绘制地图第2关&#xff1a;绘制流量最高的五条线路的路程图 第1关&#xff1a;绘制地图 任务描述 本关任务&#xff1a;使用JSP在百度地图上绘制一条共享单车起始路程。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 如何创建地…

进阶学习——Linux系统服务器硬件认识与RAID磁盘

目录 一、服务器知识补充 1.硬件 2.服务器常见故障 二、认识RAID 1.什么是RAID 2.RAID的优点 3.RAID的实现方式 三、RAID磁盘陈列 1.RAID 0 磁盘陈列介绍——RAID 0 2.RAID 1 磁盘陈列介绍——RAID 1 3.RAID 5 磁盘陈列介绍——RAID 5 4.RAID 6 磁盘陈列介绍——RA…

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间

vr体验馆用什么软件计时计费&#xff0c;如遇到停电软件程序如何恢复时间 一、软件程序问答 如下图&#xff0c;软件以 佳易王vr体验馆计时计费软件V17.9为例说明 1、软件如何计时间&#xff1f; 点击相应编号的开始计时按钮即可 2、遇到停电再打开软件时间可以恢复吗&…

【开源】基于Vue+SpringBoot的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

Redis经典五大类型源码及底层实现(一)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…

Linux CPU 数据 Metrics 指标解读

过去从未仔细了解过使用 top 和 htop 等命令时显式的CPU信息&#xff0c;本文我们详解解读和标注一下各个数据项的含义&#xff0c;同时和 Ganglia 显式的数据做一个映射。开始前介绍一个小知识&#xff0c;很多查看CPU的命令行工具都是 cat /proc/stat 里的数据&#xff0c;所…