You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity C#脚本优化:如何复用数值格式化函数减少冗余代码?

复用数字格式化逻辑的解决方案

核心思路是把你的格式化逻辑封装成一个独立的可复用函数,所有需要格式化的成本值直接调用这个函数即可,彻底避免重复的if-else代码。

通用实现步骤

  • 编写一个接收数值参数的函数,内部实现完整的格式化逻辑
  • 所有需要展示的成本值(如upgrade1Cost、upgrade2Cost)都调用该函数获取格式化后的字符串

具体代码示例

JavaScript版本(适用于网页游戏、Node.js环境)

function formatGameNumber(num) {
  // 处理百万及以上
  if (num >= 1000000) {
    return (num / 1000000).toFixed(1) + 'M';
  }
  // 处理万到百万之间
  else if (num >= 10000) {
    return (num / 1000).toFixed(1) + 'K';
  }
  // 处理千到万之间的千分位
  else if (num >= 1000) {
    return num.toLocaleString();
  }
  // 小于1000直接返回原数字字符串
  else {
    return num.toString();
  }
}

// 调用示例
const upgrade1Cost = 12500;
const upgrade2Cost = 3500000;
const upgrade3Cost = 4500;

console.log(formatGameNumber(upgrade1Cost)); // 输出 "12.5K"
console.log(formatGameNumber(upgrade2Cost)); // 输出 "3.5M"
console.log(formatGameNumber(upgrade3Cost)); // 输出 "4,500"

C#版本(适用于Unity、Unreal等游戏引擎)

using System;

// 做成静态类方便全局调用
public static class GameNumberFormatter
{
    public static string FormatCost(double cost)
    {
        if (cost >= 1000000)
        {
            return $"{cost / 1000000:F1}M";
        }
        else if (cost >= 10000)
        {
            return $"{cost / 1000:F1}K";
        }
        else if (cost >= 1000)
        {
            // N0 表示千分位格式,无小数位
            return cost.ToString("N0");
        }
        else
        {
            return cost.ToString();
        }
    }
}

// 调用示例(Unity中可在MonoBehaviour里使用)
double upgrade1Cost = 12500;
double upgrade2Cost = 3500000;

Debug.Log(GameNumberFormatter.FormatCost(upgrade1Cost)); // 输出 "12.5K"
Debug.Log(GameNumberFormatter.FormatCost(upgrade2Cost)); // 输出 "3.5M"

扩展优化建议

  • 如果需要支持更大的单位(如十亿B、万亿T),只需在函数中添加对应的条件分支即可,所有调用处无需修改
  • 可以把小数位数做成可选参数,让格式化更灵活:
    // 优化后的JS函数,支持自定义小数位
    function formatGameNumber(num, decimalPlaces = 1) {
      if (num >= 1000000) {
        return (num / 1000000).toFixed(decimalPlaces) + 'M';
      }
      // 其余逻辑同理
    }
    
  • 若成本值是整数类型(如int、long),只需将函数参数类型对应调整即可,内部逻辑无需大改

内容的提问来源于stack exchange,提问作者yeelowsnow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:15:16