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

Unity中int相除赋值float无小数输出问题求助

Unity整数除法导致浮点数计算错误问题解决

问题描述

在Unity项目中,两段脚本分别实现角色血量管理和血条UI显示逻辑:

  • Health脚本负责维护角色的血量数值
  • HealthStatusBar脚本负责根据血量更新血条显示

在HealthStatusBar的Update方法中执行float fillValue = health.currentHealth/health.maxHealth;时,当currentHealth不等于maxHealth(例如90/100),fillValue的输出结果始终为0,但已确认currentHealth的数值变化是正常的。

相关代码

Health脚本

public class Health : MonoBehaviour
{
    public int maxHealth = 100;
    public int currentHealth;

    // Start is called before the first frame update
    void Start()
    {
        currentHealth = maxHealth;
    }
}

HealthStatusBar脚本

public class HealthStatusBar : MonoBehaviour
{
    public Health health;
    public Image fillImage;
    private Slider slider;

    private void Awake()
    {
        slider = GetComponent<Slider>();
    }

    private void Update()
    {
        if (slider.value <= 0)
        {
            fillImage.enabled = false;
        }//turns off slider if dead

        float fillValue = health.currentHealth/health.maxHealth;
        Debug.Log(fillValue);
        if (fillValue < slider.maxValue / 3)
        {
            fillImage.color = Color.red;
        }//changes colour if low on health
        slider.value = fillValue;
    }
}

问题原因

这是C#的整数除法特性导致的:health.currentHealth和health.maxHealth都是int(整数)类型,两个整数相除时,程序会直接舍弃小数部分取整,比如90/100的整数计算结果就是0,之后再赋值给float类型变量,结果依然是0。

解决方案

有三种简单的修复方式:

  1. 强制转换其中一个整数为float
    让运算以浮点数规则执行,避免整数取整:

    float fillValue = (float)health.currentHealth / health.maxHealth;
    
  2. 使用浮点数值参与运算
    给其中一个数值添加.f后缀,将其转为浮点数:

    float fillValue = health.currentHealth / (float)health.maxHealth;
    
  3. 将血量变量改为float类型(可选)
    如果业务逻辑允许,直接在Health脚本中把血量定义为float类型,后续所有运算都会是浮点运算:

    public class Health : MonoBehaviour
    {
        public float maxHealth = 100f;
        public float currentHealth;
    
        void Start()
        {
            currentHealth = maxHealth;
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:31:15