欢迎来到淼淼之森的博客小站。  交流请加我微信好友: studyjava。  也欢迎关注同名公众号:Java学习之道

Unity实战之王者荣耀段位计算

  |   0 评论   |   0 浏览

前言

嗨咯,好久不见呐,五一劳动节到了,首先祝大家节日快乐呀~其次,做好防疫保护哦。无聊的话,来看看小女子的文章吧,包你感兴趣!

背景

最近开始接触PVP系统,以前都是做一些小功能,从心底来说,这种PVP系统是对我的挑战。虽然不是很有信心能做好,但是既然有这个机会,我还是愿意尝试一下。
正巧最近王者的段位也到达了一个高度,给大家炫一下~~
在这里插入图片描述

段位描述

这不,一来就涉及到了段位。段位分为大段位和小段位。
大段位从低到高分别是:青铜,白银,黄金,铂金,钻石,大师,王者
小段位从低到高分别是:Ⅴ,Ⅳ,Ⅲ,Ⅲ,Ⅱ,Ⅰ

配置数据

策划配置数据如下:

lcoal config = {
    [1] = { name = "青铜",score = { 100, 300, 500, }, },
    [2] = { name = "白银",score = { 900, 1200, 1500, }, },
    [3] = { name = "黄金",score = { 1800, 2500, 3600, }, },
    [4] = { name = "铂金",score = { 5000, 6000, 7000, 8000, 9000, }, },
    [5] = { name = "钻石",score = { 10000, 11000, 12000, 13000, 14000, } },
    [6] = { name = "大师",score = { 15000, 16000, 17000, 18000, 19000, }},
    [7] = { name = "王者",score = { 20000, }},
}

配置数据存储

思路:为了方便使用,我们会将上面的配置信息转化为浅显易懂的格式,使用二维数组表示,一维代表大段位,二维代表小段位。这样,当我们知道大段位和小段位时,就能很方便的取数据。
需要注意的是,小段位的高低和数值大小是相反的。可以通过该取大段位对应的小段位数量-当前处于第几小段位+1=小段位名对应的下标。
例如:

--从配置可以看出,对应的是铂金Ⅳ
local stage = {"Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ"}
local max = 4
local min = 2
--获取小段位名
local minName = stage[#config[max]-min+1]

知道了小段位名的获取方法,就能拼接出玩家的整体段位名。
整体段位名 = 大段位名..小段位名
将配置格式转化为程序使用格式(二维数组)

local stageData = {}
for i,v in ipairs(config) do
    stageData[i] = {}
    for a,b in ipairs(v.score) do
        stageData[i][a] = {}
        stageData[i][a].name = v.name..stage[(#v.data5)-a+1]
        stageData[i][a].score = b
    end
end

段位值转换

为了方便,我们不会去保存一个大段位值,再去保存一个小段位值,我们通过使用公式计算得到一个值,我们只需要知道这和个值,即可算出大段位值和小段位值:

section=max*100+min
section:玩家段位数据
max:大段位
min:小段位

因为我们保存的配置格式是通过大段位和小段位保存的,那么,我们如何根据玩家实际段位取得对应的大段位和小段位呢?
其实很简单的,通过运算符操作:除法实现

local max = math.modf(section/100)
local min = max*100 - 100

获取段位信息

获取了大段位和小段位之后,就可以直接取数据了
方法如下:

stageData[max][min+1]

后记

玩游戏的小伙伴,快来围观吧~顺便炫出你们的段位


标题:Unity实战之王者荣耀段位计算
作者:shirlnGame
地址:https://www.mmzsblog.cn/articles/2022/06/23/1655973625955.html

如未加特殊说明,文章均为原创,转载必须注明出处。均采用CC BY-SA 4.0 协议

本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。
• 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
• 公众号转载请联系网站首页的微信号申请白名单!

个人微信公众号 ↓↓↓                 

微信搜一搜爱上游戏开发