从同一脚本调用浮点数在我的 Unity C# 脚本中不起作用

Calling a float from the same script isn't working in my Unity C# script

我是 Unity 和 C# 的新手,所以这个问题可能有点傻。我创建了一个 public 浮点数来存储值 5f 但是当我稍后在同一个脚本中调用它时它不起作用,但是如果我直接输入浮点值它会起作用。我不确定是否有某种我错过的方式来称呼它?谢谢

This is when I declared the float. This is the line of code that uses it. Replacing jumpForce with 5f makes the function work.

由于您是 unity 的新手,我将继续并假设您可能也是 C# 的新手。由于您没有生成任何代码供我们查看,因此我们很难提出您的 use-case 中可能存在的问题,因为您可能做错的事情有数千种。

首先,一般故障排除都是从语法开始的。所以,看看你是如何编写代码的。变量在使用前的声明非常重要。通常,声明变量的良好做法类似于:

public float MyFloat { get; set; } = 5f;

这应该放在您的函数之外,在您的 class 中。分解一下,'public' 意味着代码的任何部分在初始化后都应该能够调用这个变量,但除非 class 已初始化,因为它未声明 [​​=24=]'static'。 'float' 是不言自明的,您声明该变量是 float 类型的。 MyFloat 是变量的名称,以及您将如何在代码的其他地方引用它。 '{ 得到;放; }' 告诉 C# 您希望私有 属性 由 public 字段公开,这是由编译器为您完成的。最后,'= 5f;' 将私有 属性 的初始值设置为浮点数 5,然后用分号结束代码行(您的 C# full-stop/period).

如果您的 class 已经初始化,您现在可以在其他地方使用它的名称 'MyFloat' 检索和操作这个变量 (编辑:在同一个 class)。您现在应该在方法或函数中使用它,它可能类似于:

void Update()
{
   //Increment your float by 1 on each update.
   MyFloat = MyFloat + 1f;
}

一旦您确认您的语法是正确的并且适用于这种情况,您就应该对您的逻辑进行故障排除,您如何执行此操作在很大程度上取决于您的 use-case,但是执行此操作的常用方法对于像 single-float 这样的简单情况是调试您的代码和 'watch' 值。或者甚至在纸上进行计算,从来没有伤害!

尽管如此,请更新您的问题并详细说明问题,这对我们和您来说压力会更小。