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

Posted diuxie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity游戏开发中大数值显示问题相关的知识,希望对你有一定的参考价值。

作为游戏设计者,我们更不希望展示这么长的串给玩家看。那么,你是否也在为数值太大,显示不完整而烦恼,亦或者面对如此庞大的数值感到头昏脑涨。不用担心,不用着急,下面给大家介绍游戏中常用的展示方法实现原理在游戏中,我们通常会使用如下的符号来代替指定的单位: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

end1.2.3.4.5.6.7.8.9.10.

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

end1.2.3.4.5.6.7.8.9.10.11.12.13.

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

end1.2.3.4.5.6.7.8.9.10.11.12.13.

小数位处理

上面三种方法会存在www.sangpi.com,如果小数部份为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

endlocal 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游戏开发中大数值显示问题的主要内容,如果未能解决你的问题,请参考以下文章

[Unity3D]Unity3D游戏开发之伤害数值显示

Unity 之 获取物体的旋转角正确数值

unity动画一个片段播放完怎么让它不会到初始状态

UNITY3D 动作游戏开发教程《怪物猎人》

unity3d游戏开发学习分享之表面着色器讲解

Unity 游戏框架搭建 2019 (三十三十一) MenuItem 显示顺序问题 & 类的提取