Unity游戏开发中大数值显示问题

推荐阅读:

  •  我的CSDN
  •  我的博客园
  •  QQ群:704621321
  •  我的个人博客

前言

很多游戏中的数据涉及到很大的数字,比如当前升级需要660000000000经验。作为玩家我们不希望有这么长。。。的数字出现在界面上。作为游戏设计者,我们更不希望展示这么长的串给玩家看。那么,你是否也在为数值太大,显示不完整而烦恼,亦或者面对如此庞大的数值感到头昏脑涨。不用担心,不用着急,下面给大家介绍游戏中常用的展示方法

实现原理

在游戏中,我们通常会使用如下的符号来代替指定的单位:
K是10的3次方,也就是千
M是10的6次方,也就是百万
B是10的9次方,也就是十亿

代码展示

1.只保留整数部分

local function NumFormat(num)
    if num >= 100000000 then
        num = math.modf(num / 100000000)
    elseif num >= 1000000 then
        num = math.modf(num / 1000000)
    elseif num >= 1000 then
        num = math.modf(num / 1000)
    end
    return num
end

2.保留一位小数

local function NumFormat(num)
    if num >= 100000000 then
        num = math.modf(num / 10000000)
        num = string.format("%.1fB", num / 10)
    elseif num >= 1000000 then
        num = math.modf(num / 100000)
        num = string.format("%.1fM", num / 10)
    elseif num >= 1000 then
        num = math.modf(num / 100)
        num = string.format("%.1fK", num / 10)
    end
    return num
end

3.保留两位小数

local function NumFormat(num)
    if num >= 100000000 then
        num = math.modf(num / 1000000)
        num = string.format("%.2fB", num / 100)
    elseif num >= 1000000 then
        num = math.modf(num / 10000)
        num = string.format("%.2fM", num / 100)
    elseif num >= 1000 then
        num = math.modf(num / 10)
        num = string.format("%.2fK", num / 100)
    end
    return num
end

小数位处理

上面三种方法会存在,如果小数部份为0,也会显示0这个位,为了好看,我们需要处理一下,将小数位为0的部分去掉。
思路如下:使用math.modf方法,得到两个值value1,value2。分别代表整数部分和小数部分。通过对小数部分与0.1的判断,决定是否舍掉或者保留小数位。
代码如下:

local function DealNum(_int,_float)
    if _float < 0.1 then
        return _int
    else
        local temp = string.format("%.1f", _int+_float)
        return temp
    end
end

local function NumFormat(num)
    if num >= 100000000 then
        num = math.floor(num/10000000)
        num1,num2 = math.modf(num / 10)
        num = DealNum(num1,num2)
        num = num.."B"
    elseif num >= 1000000 and num < 100000000 then
        num = math.floor(num/100000)
        num1,num2 = math.modf(num / 10)
         num = DealNum(num1,num2)
        num = num.."M"
    elseif num >= 1000 and num < 1000000 then
        num = math.floor(num/100)
        num1,num2 = math.modf(num / 10)
        num = DealNum(num1,num2)
        num = num.."K"
    end
    return num
end

你可能感兴趣的:(unity游戏开发,Unity数值显示,游戏开发大数值问题)