LitJson做简易排行榜

LitJson做简易排行榜

……

……

这是打包到安卓手机上运行后的最终效果截图(我玩了三把,然后这三把的数据就显示在了排行榜中):

 

首先分析一下,这个是在做什么?

其实就是记录一下玩家每一局游戏所需要的时间,然后做成排行榜供玩家查看。

我不讲知识点,只是记录一下自己做这个排行榜的思路和过程。

……

……

1;第一步,首先是将LitJson的源代码复制到自己的项目中。

……

……

2;第二步,要明白一件事情,排行榜的json信息,是必须存储在Application.persistentDataPath这个路径下,这个路径安卓手机和电脑都是通用的,如果是其它路径的话就不行。

……

……

3;第三步,要在Application.persistentDataPath下创建三个初始的json文件(分别用来存储最高记录、第二名、第三名的游戏时间),只有先创建文件了,才能够为之后不断的读写操作做准备。而且一定有一点要注意,只能创建一次文件,不能每一次运行游戏都初始化创建一次,那样排行榜的信息就会丢失掉了。

 

这是我为了做排行榜专门创建一个类,在这个类的Start中,我首先用一个if判断了在Application.persistentDataPath路径下是否存在了我需要创建的文件,如果没有的话就进行if里面的初始化创建,如果有的话就不创建(必须进行判断)。这样一来,当游戏运行后,就只会进行一次文件的初始化创建,创建了之后就不会进入这个if语句了。

……

……

4;第四步,做一个排行榜的UI,然后要获取Text组件来进行排行榜的数据的显示。

 

如上图所示,这一段代码是专门用来做展示用的,可以将时间转换为时分秒,当玩家打开排行榜的时候,就调用该脚本获取存储时分秒的数据,并用Text进行显示。

……

……

5;第五步,排行榜数据的更新。玩家每结束一局游戏后,可以得到一个玩家游玩的时间,只要把这个游玩时间和排行榜上的三个数据进行对比,然后更新排行榜就可以了。逻辑如下图所示:

 

……

……

做完上面五步,一个简单的排行榜就做完了。

以下为该类的所有代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;

public class Charts_message
{
    public int order;
    public float time;
}

public class JsonIO : MonoBehaviour
{
    Charts_message c1;
    Charts_message c2;
    Charts_message c3;
    void Start()
    {
        if (!(File.Exists(Application.persistentDataPath + "order1.json")))
        {
            初始化排行榜的数据
            c1 = new Charts_message();
            c2 = new Charts_message();
            c3 = new Charts_message();
            c1.order = 1;
            c1.time = 0;
            c2.order = 2;
            c2.time = 0;
            c3.order = 3;
            c3.time = 0;
            string s1 = JsonMapper.ToJson(c1);
            string s2 = JsonMapper.ToJson(c2);
            string s3 = JsonMapper.ToJson(c3);

            File.WriteAllText(Application.persistentDataPath + "order1.json", s1);
            File.WriteAllText(Application.persistentDataPath + "order2.json", s2);
            File.WriteAllText(Application.persistentDataPath + "order3.json", s3);
        }
    }

    public static void charts_Upload(float time)
    {
        string json1=File.ReadAllText(Application.persistentDataPath + "order1.json");
        string json2=File.ReadAllText(Application.persistentDataPath + "order2.json");
        string json3=File.ReadAllText(Application.persistentDataPath + "order3.json");
        Charts_message ch1 = JsonMapper.ToObject<Charts_message>(json1);
        Charts_message ch2 = JsonMapper.ToObject<Charts_message>(json2);
        Charts_message ch3 = JsonMapper.ToObject<Charts_message>(json3);

        List<float> chartList = new List<float>();
        chartList.Add(time);
        chartList.Add(ch1.time);
        chartList.Add(ch2.time);
        chartList.Add(ch3.time);
        chartList.Sort();
        ch1.time = chartList[3];
        ch2.time = chartList[2];
        ch3.time = chartList[1];
        charts_Upload1(ch1, ch2, ch3);
    }

    private static void charts_Upload1(Charts_message ch1,Charts_message ch2,Charts_message ch3)
    {
        string s1 = JsonMapper.ToJson(ch1);
        string s2 = JsonMapper.ToJson(ch2);
        string s3 = JsonMapper.ToJson(ch3);
        File.WriteAllText(Application.persistentDataPath + "order1.json", s1);
        File.WriteAllText(Application.persistentDataPath + "order2.json", s2);
        File.WriteAllText(Application.persistentDataPath + "order3.json", s3);
    }

    //将数据展示为时分秒
    public static int[] charts_play()
    {
        string json1 = File.ReadAllText(Application.persistentDataPath + "order1.json");
        string json2 = File.ReadAllText(Application.persistentDataPath + "order2.json");
        string json3 = File.ReadAllText(Application.persistentDataPath + "order3.json");
        Charts_message ch1 = JsonMapper.ToObject<Charts_message>(json1);
        Charts_message ch2 = JsonMapper.ToObject<Charts_message>(json2);
        Charts_message ch3 = JsonMapper.ToObject<Charts_message>(json3);
        int time1 =(int) ch1.time;
        int time2 =(int) ch2.time;
        int time3 =(int) ch3.time;
        int h1, m1, s1,h2,m2,s2,h3,m3,s3;
        h1 = time1 / 3600;
        m1 = (time1-h1*3600)/60;
        s1 = time1 - h1 * 3600 - m1 * 60;
        h2 = time2 / 3600;
        m2 = (time2 - h2 * 3600) / 60;
        s2 = time2 - h2 * 3600 - m2 * 60;
        h3 = time3 / 3600;
        m3 = (time3 - h3 * 3600) / 60;
        s3 = time3 - h3 * 3600 - m3 * 60;
        int[] charts_TimeData = new int[] { h1, m1, s1, h2, m2, s2, h3, m3, s3 };
        return charts_TimeData;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值