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.hqwc.cn/news/313209.html

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

相关文章

Python压缩图片大小

今天遇到一个问题&#xff0c;制作的网站因为图片尺寸比较大导致加载很慢&#xff0c;所以想通过压缩图片的方式来加快页面的加载速度&#xff08;当然也可以选择cdn和oss的方式来加快页面加载速度&#xff09; 话不多说&#xff0c;Python肯定是首选项嘛&#xff0c;那么PIL&…

深度学习核心技术与实践之计算机视觉篇

非书中全部内容&#xff0c;只是写了些自认为有收获的部分 计算机视觉背景 &#xff08;1&#xff09;视觉皮层的神经元是一列一列组织起来的&#xff0c;每一列神经元只喜欢某一种特定的形状或者某些简单的线条组合&#xff0c;而不是鱼、老鼠、鲜花 &#xff08;2&#xf…

【Linux】Linux 下基本指令 -- 详解

无论是什么命令&#xff0c;用于什么用途&#xff0c;在 Linux 中&#xff0c;命令有其通用的格式&#xff1a; command [-options] [parameter] command&#xff1a;命令本身。-options&#xff1a;[可选&#xff0c;非必填]命令的一些选项&#xff0c;可以通过选项控制命令的…

EBU7140 Security and Authentication(二)非对称加密;授权

B2 非对称加密介绍 前面的传统加密算法都是对称加密。就是加密解密用一个密钥。非对称加密就是用不同的密钥&#xff0c;加密复杂度更高。 Diffie-Hellman 密钥交换法 一种密钥交换方法。 common 是公共基础颜色&#xff0c;secret 是各自私有颜色&#xff0c;公共颜色和自己…

【产品设计】信息建设三驾马车:MES系统拆解

本篇文章&#xff0c;将从三个方面对MES系统进行拆解分析&#xff0c;并分析其特殊功能——文档管理。MES系统能实现多个生产信息的互联互通&#xff0c;提高生产效率。 MES系统主要实现生产业务系统管理。 ERP系统主要实现采购、销售、库存&#xff08;进销存&#xff09;、财…

算法基础之滑雪

滑雪 核心思想&#xff1a;记忆化搜索 状态表示&#xff1a; f[i][j] 表示所有从(i,j) 开始滑的路径的最大值 状态计算&#xff1a; 分成四个方向 f[i][j] max(f[i][j] , f[i][j1] 1) 且h[a][b] (下一个点) 必须严格小于 h[i][j] 才能滑过去 #include<iostream>#…

大数据背景下基于联邦学习的小微企业信用风险评估研究

摘要&#xff1a; 小微企业信用风险评估难是制约其融资和发展的一个主要障碍。基于大数据的小微企业信用风险评估依然面临着单机构数据片面、跨机构数据共享难、模型不稳定等诸多挑战。针对相关问题和挑战&#xff0c;本项目拟在多主体所有权数据隐私保护与安全共享的背景下&am…

基于斑点鬣狗算法优化的Elman神经网络数据预测 - 附代码

基于斑点鬣狗算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于斑点鬣狗算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于斑点鬣狗优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

junit单元测试Mock

在平常工作&#xff0c;经常会用到单元测试&#xff0c;那么单元测试应该怎么写呢&#xff1f; 1&#xff1a;引入包&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><…

数据结构:基于数组的环形队列(循环队列)实现

1 前言 队列是一种先进先出的线性表&#xff0c;简称为FIFO。它只允许在队尾插入成员&#xff0c;在队头删除成员&#xff0c;就像现实生活中排队上车一样。 队列的实现可以通过链表或数组完成&#xff0c;一般来说都推荐使用链表来实现队列&#xff0c;使用数组实现队列时每次…

AI人工智能技术发现了拉斐尔名画背后的秘密:这幅画并非完全由大师本人完成

最近&#xff0c;一个先进的人工智能神经网络在拉斐尔的名画中发现了一个不寻常的地方&#xff1a;其中的一副面孔并非由拉斐尔本人绘制&#xff0c;而是出自其他艺术家之手。 详细文章网址链接&#xff1a;Deep transfer learning for visual analysis and attribution of pai…

07 HAL库ADC读取电压的值

引言&#xff1a; 本文使用adc读取接在SOC的ADC的通道上外设的模拟数据&#xff0c;本文的的实验对象是一个滑动变阻器&#xff0c; 像其它的ADC外设不如光电管&#xff0c; 火焰传感器&#xff0c; 等等一些里的adc设备的根据都是差不多的。 一、ADC的基本知识 ADC&#xff08…