mini
2026/4/14大约 4 分钟
最后同步日期:2026-04-16 | Godot 官方原文 — mini
mini
定义
mini() 用来比较两个整数,返回更小的那个。
就像你在两个价格中挑便宜的——mini(30, 50) 会返回 30。
mini() 和 min() 的区别在于:mini() 明确指定只处理整数。整数没有小数点,在计算机中运算更快、更精确。当你处理的数值一定是整数时(比如物品数量、等级、格子坐标),用 mini() 更合适,也能让代码意图更清晰。
在游戏开发中,整数取小值常用于:限制角色等级不超过上限、限制拾取物品数量不超过背包剩余空间、限制同时召唤的怪物数量等。
函数签名
C#
public static int Min(int a, int b)GDScript
func mini(a: int, b: int) -> int参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
a | int | 是 | 第一个整数 |
b | int | 是 | 第二个整数 |
返回值
int —— a 和 b 中较小的那个值。如果两个相等,返回 a。返回值一定是整数。
代码示例
基础用法:比较两个整数
C#
int a = Mathf.Min(10, 20); // 运行结果: 10
int b = Mathf.Min(-5, 3); // 运行结果: -5
int c = Mathf.Min(7, 7); // 运行结果: 7(相等时返回第一个)GDScript
var a = mini(10, 20) # 运行结果: 10
var b = mini(-5, 3) # 运行结果: -5
var c = mini(7, 7) # 运行结果: 7(相等时返回第一个)实际场景:限制等级和拾取数量
C#
// 限制角色等级不超过最高等级 99
int currentLevel = 120;
int maxLevel = 99;
int actualLevel = Mathf.Min(currentLevel, maxLevel);
// 运行结果: 99(被限制在上限)
// 限制拾取数量不超过背包剩余空间
int wantToPickup = 15;
int remainingSpace = 8;
int actualPickup = Mathf.Min(wantToPickup, remainingSpace);
// 运行结果: 8(只能捡 8 个,背包不够装 15 个)
GD.Print($"拾取了 {actualPickup} 个物品");
// 运行结果: 拾取了 8 个物品GDScript
# 限制角色等级不超过最高等级 99
var current_level = 120
var max_level = 99
var actual_level = mini(current_level, max_level)
# 运行结果: 99(被限制在上限)
# 限制拾取数量不超过背包剩余空间
var want_to_pickup = 15
var remaining_space = 8
var actual_pickup = mini(want_to_pickup, remaining_space)
# 运行结果: 8(只能捡 8 个,背包不够装 15 个)
print("拾取了 %d 个物品" % actual_pickup)
# 运行结果: 拾取了 8 个物品进阶用法:在回合制战斗系统中限制伤害和次数
C#
using Godot;
public partial class TurnBattle : Node
{
[Export] public int ExMaxPartySize = 4;
[Export] public int ExMaxItemsPerTurn = 3;
private int _currentRound = 0;
public void StartNewRound()
{
_currentRound++;
// 限制每回合可使用的物品数量
int itemsAvailable = 10;
int itemsCanUse = Mathf.Min(itemsAvailable, ExMaxItemsPerTurn);
// 运行结果: 3(每回合最多用 3 个道具)
GD.Print($"第 {_currentRound} 回合,可用道具数: {itemsCanUse}");
// 运行结果: 第 1 回合,可用道具数: 3
}
public void JoinBattle(int wantingToJoin)
{
// 限制参战人数不超过队伍上限
int actualJoin = Mathf.Min(wantingToJoin, ExMaxPartySize);
// 运行结果(假设 wantingToJoin=6): 4(最多 4 人参战)
GD.Print($"{actualJoin} 名队员加入战斗!");
// 运行结果: 4 名队员加入战斗!
}
public void CalculateExperience(int baseExp, int bonusExp)
{
// 每场战斗经验上限 500
int totalExp = baseExp + bonusExp;
int cappedExp = Mathf.Min(totalExp, 500);
// 运行结果(假设 baseExp=300, bonusExp=250): 500(被限制在上限)
GD.Print($"获得经验: {cappedExp}");
// 运行结果: 获得 500
}
}GDScript
extends Node
@export var max_party_size: int = 4
@export var max_items_per_turn: int = 3
var _current_round: int = 0
func start_new_round():
_current_round += 1
# 限制每回合可使用的物品数量
var items_available = 10
var items_can_use = mini(items_available, max_items_per_turn)
# 运行结果: 3(每回合最多用 3 个道具)
print("第 %d 回合,可用道具数: %d" % [_current_round, items_can_use])
# 运行结果: 第 1 回合,可用道具数: 3
func join_battle(wanting_to_join: int):
# 限制参战人数不超过队伍上限
var actual_join = mini(wanting_to_join, max_party_size)
# 运行结果(假设 wanting_to_join=6): 4(最多 4 人参战)
print("%d 名队员加入战斗!" % actual_join)
# 运行结果: 4 名队员加入战斗!
func calculate_experience(base_exp: int, bonus_exp: int):
# 每场战斗经验上限 500
var total_exp = base_exp + bonus_exp
var capped_exp = mini(total_exp, 500)
# 运行结果(假设 base_exp=300, bonus_exp=250): 500(被限制在上限)
print("获得经验: %d" % capped_exp)
# 运行结果: 获得 500注意事项
- 此函数只接受整数(int)参数:如果需要比较浮点数(小数),请使用
minf()或min()。 - C# 中没有单独的
Mini函数:C# 统一使用Mathf.Min(int, int)来处理整数比较,效果和 GDScript 的mini()完全相同。 Mathf.MinvsSystem.Math.Min:两者功能相同,在 Godot 中推荐使用Mathf.Min()。- 如果需要同时限制最大值和最小值:请使用
clampi()函数,它相当于maxi(mini(value, max), min)的一步到位写法。 - 整数没有精度问题:和浮点数不同,整数比较永远是精确的,不会出现"明明相等但判断不等"的情况。
