要求:实现如图所示UI界面,按下某一按键实现排行榜的更新

M:


//数据模型类 主要负责数据(玩家的数据)
public class RankModel
{//定义三个属性 姓名、分数、排名//定义构造函数public string Name{set;get;}public int Score{set;get;}public int Number{set;get;}public RankModel(string name,int score,int number){Name = name;Score = score;Number = number;}}

V:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//排行榜视图类:负责UI数据的显示,向外界提供UI数据初始化的方法
public class RankElementSc : MonoBehaviour
{private Text numberText;//显示排名的子物体的textprivate Text nameText;//显示名字的子物体的textprivate Text scoreText;//显示分数的子物体的textvoid Awake(){numberText = transform.Find("NumberText").GetComponent<Text>();nameText = transform.Find("NameText").GetComponent<Text>();scoreText = transform.Find("ScoreText").GetComponent<Text>();}//UI初始化public void Init(RankModel rank){Debug.Log(numberText + "" + rank.Number);numberText.text = rank.Number.ToString();nameText.text = rank.Name;scoreText.text = rank.Score.ToString();}}

C:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;//排行榜控制类,负责数据的处理,游戏的逻辑
public class RankController : MonoBehaviour
{public GameObject rankElementPr;//排行榜元素预设体List<RankModel> rankModels;//数据的集合List<RankElementSc> elementScs;//单元格脚本的集合public int RANKNUMBER = 5;//显示排名的数量RankModel[] top5Arr;//存放前5名+1的数据private string playerData;private void Awake(){rankModels = new List<RankModel>();//初始化玩家列表elementScs = new List<RankElementSc>();//初始化单元格脚本列表top5Arr = new RankModel[RANKNUMBER + 1];//初始化前5名玩家数组}void Start(){LoadData();//加载初始数据SortRankdataOrScore();//对所有玩家进行排序//DisplayData();//更新所有玩家数据DisplayTop5Data();//更新前5名数据}//加载初始数据private void LoadData(){//创建一个数据//RankModel m1 = new RankModel("孙悟空", 99, 0);//rankModels.Add(m1);//RankModel m2 = new RankModel("李寻欢", 66, 0);//rankModels.Add(m2);//RankModel m3 = new RankModel("猪八戒", 70, 0);//rankModels.Add(m3);//RankModel m4 = new RankModel("沙僧", 89, 0);//rankModels.Add(m4);//RankModel m5 = new RankModel("傻吊", 30, 0);//rankModels.Add(m5);//RankModel m6 = new RankModel("测试玩家", 0, 0);//rankModels.Add(m6);//PlayerPrefs.DeleteAll();//初始数据//if (!PlayerPrefs.HasKey("RankData"))//{//    playerData = "孙悟空 99 0\n李寻欢 66 0\n猪八戒 70 0\n沙僧 89 0\n傻吊 30 0\n测试玩家 0 0";//    PlayerPrefs.SetString("RankData", playerData);//}解析数据//string Datas = PlayerPrefs.GetString("RankData");//string[] playerdatas = Datas.Split('\n');//foreach (string item in playerdatas)//{//    string[] playerdata = item.Split(' ');//    string modelName = playerdata[0];//    string modelScore = playerdata[1];//    string modelRank = playerdata[2];//    RankModel model = new RankModel(modelName, int.Parse(modelScore), int.Parse(modelRank));//    rankModels.Add(model);//}if (!PlayerPrefs.HasKey("RankData")){playerData = "孙悟空 99 0\n李寻欢 66 0\n猪八戒 70 0\n沙僧 89 0\n傻吊 30 0\n测试玩家 0 0";PlayerPrefs.SetString("RankData",playerData);}string Datas =PlayerPrefs.GetString("RankData");string[] playerdatas = Datas.Split('\n');foreach (string item in playerdatas){string[] playerdata = item.Split(' ');string modelName = playerdata[0];string modelScore = playerdata[1];string modelRank = playerdata[2];RankModel model = new RankModel(modelName, int.Parse(modelScore), int.Parse(modelRank));rankModels.Add(model);}//将6名玩家添加到排行榜前五名数组中top5Arr = rankModels.ToArray();//对前五名数组排序SortTop5Arr();}//刷新数据--创建UIprivate void DisplayData(){for (int i = 0; i < rankModels.Count; i++){//调用UI初始化方法,传递数据CreatElement().Init(rankModels[i]);}}//更新前5名数据void DisplayTop5Data(){for (int i = 0; i < top5Arr.Length - 1; i++){//调用UI初始化方法,传递数据CreatElement().Init(top5Arr[i]);}}//创建一个单元格RankElementSc CreatElement(){//创建UI排行榜元素GameObject element = Instantiate<GameObject>(rankElementPr);//设置父物体,自身缩放与父物体缩放无关element.transform.SetParent(transform, false);//添加组件RankElementSc ranksc = element.AddComponent<RankElementSc>();//将脚本添加到集合elementScs.Add(ranksc);return ranksc;}//对所有玩家进行排序private void SortRankdataOrScore(){for (int i = 0; i < rankModels.Count - 1; i++){bool k = false;for (int j = 0; j < rankModels.Count - 1 - i; j++){if (rankModels[j].Score < rankModels[j + 1].Score){RankModel temp;temp = rankModels[j];rankModels[j] = rankModels[j + 1];rankModels[j + 1] = temp;k = true;}}if (!k){break;}}//设置玩家排名for (int i = 0; i < rankModels.Count; i++){rankModels[i].Number = i + 1;}}//对前5名数组进行排序private void SortTop5Arr(){for (int i = 0; i < top5Arr.Length - 1; i++){bool k = false;for (int j = 0; j < top5Arr.Length - 1 - i; j++){if (top5Arr[j].Score < top5Arr[j + 1].Score){RankModel temp;temp = top5Arr[j];top5Arr[j] = top5Arr[j + 1];top5Arr[j + 1] = temp;k = true;}}if (!k){break;}}//排名for (int i = 0; i < top5Arr.Length; i++){top5Arr[i].Number = i + 1;}}//增加玩家int playerName = 0;public void AddPlayer(){//增模拟加一名新玩家playerName++;int score = Random.Range(0, 100);RankModel model = new RankModel("玩家" + playerName, score, 0);rankModels.Add(model);//创建单元格CreatElement();//重新排序SortRankdataOrScore();//刷新数据RefreshData();}//刷新数据void RefreshData(){for (int i = 0; i < rankModels.Count; i++){elementScs[i].Init(rankModels[i]);}}//刷新数据 -- 前五名数组void RefreshData(RankModel[] topArr){for (int i = 0; i < topArr.Length - 1; i++){elementScs[i].Init(topArr[i]);}}private void Update(){if (Input.GetKeyDown(KeyCode.Space)){//AddPlayer();//增模拟加一名新玩家playerName++;int score = Random.Range(0, 100);RankModel model = new RankModel("玩家" + playerName, score, 0);rankModels.Add(model);//替换掉原排名数组中第6人的名单top5Arr[RANKNUMBER] = model;//重新排序SortTop5Arr();//刷新数据RefreshData(top5Arr);}}
}

Unity排行榜功能(使用MVC框架)相关推荐

  1. MVC框架的优点-老外的原文翻译

    来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=128 GPS平台.网站建设.软件开发.系统运维,找森大网络科技! http://cnsendnet ...

  2. Unity框架——MVC框架

    前言--什么是MVC框架 MVC全名是Model View Controller, 是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据 ...

  3. 从零开始实现一个简易的Java MVC框架(六)--加强AOP功能

    前言 在前面从零开始实现一个简易的Java MVC框架(四)--实现AOP和从零开始实现一个简易的Java MVC框架(五)--引入aspectj实现AOP切点这两节文章中已经实现了AOP功能并且引用 ...

  4. MVC框架实现用户的登录注册功能

    MVC是什么? MVC,全称model view controller-模型,视图,控制器 model是将数据库中的表到Java中变成实体类 view是编写JSP页面 controller是用来业务逻 ...

  5. PHP简单实现MVC框架路由功能模式

    说到使用PHP进行网站开发,自然离不开各种PHP的开发框架,开发框架为我们提供了灵活的开发方式,MVC层分离,业务解耦等等,让我们的开发更为快捷方便.但是很多人只是会使用框架,却从来不去了解框架的内部 ...

  6. Unity MVC框架之见解

    Unity MVC框架之见解 MVC框架认识 构架图 案例 无框架,普通逻辑代码脚本 主UI脚本 角色UI脚本 摄像机显示脚本 脚本的放置 MVC框架的运用 Model脚本 View脚本 主界面的Vi ...

  7. 用unity和php实现一个排行榜功能(unity客户端篇)

    注:此文章需配合以下文章一起使用 用unity和php实现一个排行榜功能(PHP服务端篇) unity客户端篇 目前我用的版本是unity2020,unity2019,这份代码应该也适用 排行榜显示部 ...

  8. MVC框架实现用户登录注册功能(连接数据库)

    目录 一.简单理解MVC框架 二.项目结构 三.项目源码 3.1 User 3.2 UserDao 3.3 RegisterDao 3.4 servletControll 3.5 servletCon ...

  9. mvc的宿舍管理系统源码 基于jsp_[源码和文档分享]基于JSP的MVC框架实现的图书推荐系统展示平台网站...

    推荐系统是目前互联网中最常见的一种智能产品形式.由于网络中信息量的快速增长以及图书出版行业出版量的攀升,人们需要一种办法,来解决信息过载的问题.此外,用户访问网络是为了获取信息,但并不是所有的访问都有 ...

最新文章

  1. 不改一行代码定位线上性能问题
  2. php mysqldb 数据库切换,Python MySQLdb模块连接操作mysql数据库实例
  3. 关于HTML5中的video和audio元素
  4. android中文api(85)——HorizontalScrollView
  5. WinForm 清空界面控件值的小技巧
  6. 常用JavaScript函数 31 - 46(自我总结)
  7. mysql只导出表数据_MySQL 如何只导出 指定的表 的表结构和数据 ( 转 )
  8. 【SENCHA TOUCH】Sencha Touch ExtJs 给 Button 添加图片(二)
  9. 对视频图像进行OSD叠加
  10. 基于MK802的应用开发和相关的工具
  11. pythonfor反向循环_Python for 循环语句
  12. Python 机器学习 唐宇迪泰坦尼克号【最新代码】
  13. python-20180103-1
  14. 编写类的步骤编写测试类
  15. 批量插入图片——《超级处理器》应用
  16. 横空出世。复盘B站面试坑我最深的Java并发:JDK源码剖析。B站五面面经(附过程、答案)
  17. 关于Type-C扩展坞干扰路由器交换机的解决方案
  18. 八月六日个人训练记录
  19. 构建U盘启动的嵌入式linux
  20. 业务层 、服务层、数据层、表现层

热门文章

  1. centos7安装mplayer解码器
  2. android 补丁包增量更新
  3. 加密脱胎于去中心化理想,但力求合规 细数各国政府态度之演变
  4. centos7 Minimal 虚拟机安装图文教程
  5. 《Fast Gradient Projection Method for Text Adversary Generation and Adversarial Training》论文学习笔记
  6. 如何获取可靠的国外服务器IP地址?
  7. Solaris11自带php配置,solaris11网络相关配置
  8. Java项目(毕设课设) 之 [含文档+PPT+任务书+中期检查表+源码等]基于S2SH的医院在线挂号系统
  9. Arch安装kde后图形软件商店无法使用解决方案
  10. 装完win11显示版本是win10怎么回事?