我尝试用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”传递,但没有成功。
1条答案
按热度按时间yiytaume1#
正如罗恩在他的评论中提到的,C#不允许非常量变量(即值在运行时可以更改的变量,如Unity中的序列化字段)用作函数签名中的默认值,我认为您最好的选择是使用overload设置“默认”值。