unity3d 错误CS1736:“bulletSpeed”的默认参数值必须是编译时常量

btxsgosb  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(237)

我尝试用Unity 2D创建一个游戏。下面的代码抛出一个错误“error CS1736:'bulletSpeed'的默认参数值必须是一个编译时常量”,坦率地说,我不知道如何修复。

private Rigidbody2D rb;
    private MovementController checkForSlowMotion;
    private float bulletSpeednew;
    //private float bulletSpeed;

    // Start is called before the first frame update
    void Awake()
    {
        checkForSlowMotion = GameObject.Find("Player").GetComponent<MovementController>();
        rb = GetComponent<Rigidbody2D>();
    }

    public void MoveBullet(float bulletSpeed = bulletSpeednew)
    {
        if (checkForSlowMotion.slowDown == true)
        {
            this.bulletSpeed = 1.0f;
        }
        else if (checkForSlowMotion.slowDown == false)
        {
            bulletSpeed = 10.0f;
        }
        rb.MovePosition(transform.position + transform.right * bulletSpeed * Time.deltaTime);
    }

先谢谢你。
我曾尝试将非静态变量“bulletspeednew”作为“bulletSpeed”传递,但没有成功。

yiytaume

yiytaume1#

正如罗恩在他的评论中提到的,C#不允许非常量变量(即值在运行时可以更改的变量,如Unity中的序列化字段)用作函数签名中的默认值,我认为您最好的选择是使用overload设置“默认”值。

public void MoveBullet()
{
    MoveBullet (bulletSpeednew);
}

public void MoveBullet(float bulletSpeed)
{
    //...
}

相关问题