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;。 在某…

2024年网络安全竞赛-页面信息发现任务解析

页面信息发现任务说明: 服务器场景:win20230305(关闭链接)在渗透机中对服务器信息收集,将获取到的服务器网站端口作为Flag值提交;访问服务器网站页面,找到主页面中的Flag值信息,将Flag值提交;访问服务器网站页面,找到主页面中的脚本信息,并将Flag值提交;访问服务器…

RabbitMQ详解

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

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

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

C#常用类

一、C#常用类 C#中有一些具有特定功能的类&#xff0c;例如操作字符串的类、用于操作日期的类、生成随机数的类 字符串的基本特征 1、字符串的不可变性 字符串对象一旦创建&#xff0c;就无法对其进行修改。 .NET框架的底层提供了一种机制&#xff0c;当一个字符串已经被创建…

React Native 从类组件到函数组件

1. 发展趋势 React Native社区中的趋势是朝向使用函数组件&#xff08;Functional Components&#xff09;和Hooks的方向发展&#xff0c;而不是使用类组件&#xff08;Class Components&#xff09;。 React Native自推出Hooks API以来&#xff0c;函数组件和Hooks的使用变得…

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

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

程序的编译、链接

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

EE Vocabulary(电气工程词汇库)

前言 整理了一些EE&#xff08;电子工程&#xff09;和CS&#xff08;计算机&#xff09;专业的学生们阅读英文文献或写论文常用的一些词汇。 仓库GitHub地址&#xff1a;https://github.com/Phillweston/EE_Vocabulary 内容 仓库包含以下格式的电气工程词汇&#xff1a; …

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

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

代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、 55. 跳跃游戏、45.跳跃游戏II

122.买卖股票的最佳时机II 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a;贪心算法也能解决股票问题&#xff01;LeetCode&#xff1a;122.买卖股票最佳时机II_哔哩哔哩_bi…

大数据- 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;…

Mongodb聚合操作中的$type

在mongodb查询语句中&#xff0c;用户可以通过指定$type值&#xff0c;查询出的符合字段类型的文档数据。在mongodb聚合操作中&#xff0c;也存在$type操作符。本文就聚合操作中的$type进行介绍。 定义 返回一个表示传入参数BSON类型的字符串。在聚合操作中&#xff0c;按照下…

leetcode贪心(最大子序列和、分发饼干、摆动序列)

455.分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有…