Godot游戏内大数字单位转换

环境、版本及语言:Windows10,Godot 4.2.1.stable,GDScript

一、前言

游戏中数字过大时不可能全显示在屏幕上,所以需要单位转换,如10000->10k,1000000->1m等等

二、代码实现

以下代码可以设置成全局脚本(自动加载)或根据项目需要设置。

脚本实现:输入需要处理的数据,返回转换后的字符串,保留两位小数,末尾去0,4位数以下不转换,可自行修改if len <= x。symbol数组存放单位,可自行添加

extends Node

# 单位
var symbol: Array[String] = ["K", "M", "B", "T", "aa", "ab", "ac", "ad"]

# 数据转换
func transform(num: float) -> String:
	var num_s: String = str(num)  # 转换为字符串
	var num_int: String = num_s.split(".")[0]  # 整数部分
	var len: int = len(num_int)  # 整数位长度
	
	if len <= 4:  # 小于4位
		# 小数部分,不存在小数返回00,超过2位取前两位
		var num_dec: String = (
			num_s.split(".")[1] if len(num_s.split(".")) > 1 else "00"
		).substr(0, 2)
		
		# 结果,保留两位小数,末尾去0
		var result: String = (
			num_int + "." + num_dec
		).rstrip("0").rstrip(".")

		return result
	else:
		len -= 4
		var index: int = len / 3  # 单位索引
		var last: int = len % 3  # 位数余数
		
		# 结果
		var result: String = (
			num_int.substr(0, last + 1) + "." + num_int.substr(last + 1, 2)
		).rstrip("0").rstrip(".") + symbol[index]
		
		return result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值