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

Unity中立方体放大到指定值后自动缩小功能代码运行异常如何解决

问题解决方法

错误原因

  • 缺少缩放方向的状态标记:当缩放值降低到7以下时,下一帧会立刻进入else分支重新放大,最终表现就是缩放值在6~7之间反复抖动
  • if分支的for循环用法错误:Unity的Update()方法每帧仅执行1次,单帧内的循环只会让本帧的缩放多减数倍Time.deltaTime,完全无法实现跨帧持续缩小的效果

修正方案

新增一个bool类型的成员变量记录当前缩放方向,去掉错误的for循环,按帧根据状态执行对应缩放逻辑即可,参考代码如下:

// 声明为类成员变量,不要写在Update方法内部
private bool isScalingUp = true;
// 缩放速度参数,可直接在Inspector面板调整数值
public float scaleSpeed = 1f;

private void Update()
{
    if (isScalingUp)
    {
        // 执行放大逻辑
        transform.localScale += Vector3.one * scaleSpeed * Time.deltaTime;
        // 放大到阈值后切换为缩小状态
        if (transform.localScale.x >= 7)
        {
            isScalingUp = false;
        }
    }
    else
    {
        // 执行缩小逻辑
        transform.localScale -= Vector3.one * scaleSpeed * Time.deltaTime;
        // 缩小到1后锁定数值,若需要循环缩放可放开注释切换回放大状态
        if (transform.localScale.x <= 1)
        {
            transform.localScale = Vector3.one;
            // isScalingUp = true;
        }
    }
}

逻辑说明

  • 用成员变量保存缩放方向,不会因为缩放值暂时低于7就切换回放大逻辑,保证缩小过程可以持续执行到缩放值回到1
  • 去掉了错误的单帧for循环,每帧仅执行一次缩放计算,符合Unity帧更新的执行规则
  • 缩小到阈值时主动赋值为1,避免浮点运算精度误差导致最终缩放值和预期不一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:57:00