Unity游戏开发之排行榜(采用PlayerPrefs存储)
Posted 计算机秃头少女酱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity游戏开发之排行榜(采用PlayerPrefs存储)相关的知识,希望对你有一定的参考价值。
首先找一些排行榜的背景图片当作排行榜的背景,也可以添加前三名的排名图片,将前三名的排名变成图片显示出来,我这里没做注解。也可以在建立的空UI中添加Rect Transform可以让排行榜有一个滑动效果,注意添加这个组件一定要添加Image组件。
源代码:
RankItem 类代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class RankItem : MonoBehaviour
private Text pm = null;
private Text xm = null;
private Text fs = null;
public void Init(int rank,string name,string score)
pm = transform.Find("pm").GetComponent<Text>();
xm = transform.Find("xm").GetComponent<Text>();
fs = transform.Find("fs").GetComponent<Text>();
pm.text = "第" + rank + "名";
xm.text = name;
fs.text = " " + score;
RankListPanel 类源代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class RankListPanel : MonoBehaviour
private RankItem RankItemmould; //模板
private Transform RankItemparent; //父亲
private List<RankItem > RankItemList ; //列表
void Start()
//初始化
RankItemmould = transform.Find("rankItem").GetComponent<RankItem >();
RankItemparent = transform.Find("scrollView/viewPort/content/grip");
RankItemList = new List<RankItem>();
RankItemmanage.Instance.save("张三", 27000);
RankItemmanage.Instance.save("王二",28000);
RankItemmanage.Instance.save("赵六", 26000);
RankItemmanage.Instance.save("拉拉啦",31000);
RankItemmanage.Instance.save("李四儿", 34000);
RankItemmanage.Instance.save("孙六", 32000);
Init();
public void Init()
List<Rank> _allRankInfoList = RankItemmanage .Instance.get ();
if(_allRankInfoList.Count <= 0)
return;
for (int i = 0; i < _allRankInfoList.Count; i++)
RankItem rankItem = GetARankItem ();
rankItem.Init(i+1, _allRankInfoList[i].name, ""+ _allRankInfoList[i].score );
//新的排行项目
RankItem CreateANewRankItem()
GameObject go = Instantiate(RankItemmould.gameObject) as GameObject; //复制排行相对应
RankItem Newpaihang = go.GetComponent<RankItem>();
Newpaihang.transform.SetParent(RankItemparent);
RankItemList.Add(Newpaihang);
return Newpaihang;
RankItem GetARankItem()
RankItem newrankItem = CreateANewRankItem ();
return newrankItem;
RankItemmanage类源代码:
using System.Collections.Generic;
using UnityEngine;
//排行信息管理
public class Rank
public string name = "";
public int score = 0;
public class RankItemmanage
private List <Rank > Linelist=null; //
private static RankItemmanage Xpaihang = null;
private int max=10;
public static RankItemmanage Instance
get
if (Xpaihang == null)
Xpaihang = new RankItemmanage();
return Xpaihang;
//存储信息
public void save(string name,int score)
Analyze();
//最新信息加入列表
Rank rankInfo = new Rank();
rankInfo.name = name;
rankInfo.score = score ;
Linelist.Add(rankInfo);
//新加入的信息进行排序
//对超过排名的信息进行抹去
Linelist.Sort(CompareSpeedFromBigToSmall);
if (Linelist.Count > max)
Linelist.RemoveAt(Linelist.Count - 1);
string Memory = ""; //所有排行信息
for(int i=0;i< Linelist.Count; i++)
//每一个排行信息
string HMemory = "";
HMemory += Linelist[i].name;
HMemory += "+";
HMemory += Linelist[i].score;
if (i != (Linelist.Count - 1))
HMemory += "|";
Memory += HMemory;
//存储排行信息
PlayerPrefs.SetString("RankInfo", Memory);
//获得排行信息
public List<Rank> get()
Analyze();
return Linelist;
//分离解析存储的排行信息
private void Analyze()
Linelist = new List<Rank>();
string rankString = PlayerPrefs.GetString("RankInfo");
//如果存储有信息进行解析
if(!string.IsNullOrEmpty (rankString))
string[] rankItemArray = rankString.Split('|');
for(int i=0;i<rankItemArray.Length; i++)
string[] rankItem = rankItemArray[i].Split('+');
Rank rankInfo = new Rank();
rankInfo.name = rankItem[0];
rankInfo.score = int.Parse(rankItem[1]);
Linelist.Add(rankInfo);
if (Linelist.Count > 0)
Linelist.Sort(CompareSpeedFromBigToSmall);
//冒泡排序
private int CompareSpeedFromBigToSmall(Rank rank1, Rank rank2)
double a = rank1.score;
double b = rank2.score;
if (a==b)
return 0;
else if (a>b)
return -1;
else
return 1;
注:每次运行都会存储一遍游戏者的信息。这个排行需要和游戏类结合,这边我为了测试直接输入信息并直接调用了 Init()函数。
unity开发培训机构排行榜
Unity3D是美国Unity Technologies公司开发的一款强大的跨平台游戏开发引擎,能让游戏开发者轻松创建诸如3D视频游戏、实时3D动画等互动内容,并广泛应用于网页游戏及手机游戏开发领域。unity3d培训机构排行榜值得看。
其实小编很想告诉大家:目前网上形形色色的unity3d培训机构排行榜不值得大家相信,因为并不权威。所以大家做个参考就好了,没有必要太当真。
目前国内53%的网页游戏均使用Unity3D开发,而有80%的3D手机游戏使用Unity3D开发,已经有2000多款基于Unity3D开发的手机游戏发布在全球各大应用商城,仅App Store平台上就有1500+款用Unity3D开发的游戏,累计下载量超过5亿次。
而Unity3D开发工程师已成为移动互联网新时代的高薪职业,但国内专业人才不足一万,市场需求却有80万。
凭借着其编辑器强大,渲染能力强,资源种类多,全平台支持,开发人员多 等优势,目前国内有80%的手机游戏使用Unity3D进行开发,像《炉石传说》《神庙逃亡2》《我叫MT2》等经典手游都是由Unity3D开发的。
而随着Unity3D游戏开发技术的崛起,相关专业人才却严重不足。据官方数据显示,中国Unity3D游戏开发人才缺口高达80万,并且随着行业的迅速发展需求量会进一步增加。
而且以80%VR基于Unity开发为例,众多风投机构、BAT、新浪等知名企业,纷纷寻找专业开发人才,平均薪酬可达16k,甚至可达35K,远远超过其他软件开发岗位的薪资水平。
想学unity3d技术,可以了解课程优势选择。优势突出在以下几点:
1)拥有从业多年的游戏架构师任教,课程大纲有深度、有广度,课程定位准确,保证学生在学习的道路上走得正,走得稳。
2.讲解游戏架构,并免费赠送快速开发架构代码,让学生毕业时拥有更高的起点。
3.详细讲解游戏热更新技术,赠送Lua语言编写的热更新框架。
4.深入的图形学课程,讲解包括OpenGL渲染管线,着色器,高光计算、菲尼尔色散、雾方程式等高阶课程。对于从事过Unity游戏开发的人员也具有相当的学习价值。
以上是关于Unity游戏开发之排行榜(采用PlayerPrefs存储)的主要内容,如果未能解决你的问题,请参考以下文章
Unity Android 游戏可以使用 Google Play 游戏插件登录,但无法从排行榜加载分数