统一需要一个 public class 但被迫添加静态
Need a public class in unity but forced to add static
我想通过将变量编写为 public var 来使它在 unity inspector 中可编辑 - 例如,
public int days = 3
-
然后有另一个使用 days
的私有变量(并将用户友好的输入转换为现在对我的代码有用的数字),例如
private int hours = days * 24
。但是,我不得不将 days
设为 public static int
,以便通过 hours
等式访问它。这意味着它不再可用于在检查器中进行更改。我认为,这是我对 c# 理解的一个基本问题,任何关于我应该做什么的提示都会真正帮助初学者。
public int days = 3;
private int hours = days * 24;
谢谢!
如果能提供一个完整的脚本示例就更好了。
通过仔细阅读你的问题,这就是你目前正在做的事情:
public int days = 3;
private int hours = days * 24;
在函数中初始化 hours
变量,应该没问题。 Start
或 Awake
函数通常用于这样的事情:
public int days = 3;
private int hours;
void Start()
{
hours = days * 24;
}
这是因为要用另一个变量初始化一个变量,你用来初始化另一个的变量必须是static
或const
变量。
这个 const
的例子也可以工作:
public const int days = 3;
public int hours = days * 24;
我认为这里的关键是 C# 需要知道什么时候实际 运行 你的 days * 24
行。假设您启动游戏,然后打开检查器并更改 days
的值 - 您可能也希望更改小时数以反映这一点。
最简单的方法是在需要时 运行 它 - 即当您需要 'Hours' 的值时,那就是 运行 [=11] =].最好使用 C# 属性:
public int Days = 3;
public int Hours{
get {
return Days * 24;
}
}
现在您可以像使用字段一样使用 Hours
,无论您何时更改 'Days' 字段,它始终是正确的小时数,因为它会计算它为您点播
我想通过将变量编写为 public var 来使它在 unity inspector 中可编辑 - 例如,
public int days = 3
-
然后有另一个使用 days
的私有变量(并将用户友好的输入转换为现在对我的代码有用的数字),例如
private int hours = days * 24
。但是,我不得不将 days
设为 public static int
,以便通过 hours
等式访问它。这意味着它不再可用于在检查器中进行更改。我认为,这是我对 c# 理解的一个基本问题,任何关于我应该做什么的提示都会真正帮助初学者。
public int days = 3;
private int hours = days * 24;
谢谢!
如果能提供一个完整的脚本示例就更好了。 通过仔细阅读你的问题,这就是你目前正在做的事情:
public int days = 3;
private int hours = days * 24;
在函数中初始化 hours
变量,应该没问题。 Start
或 Awake
函数通常用于这样的事情:
public int days = 3;
private int hours;
void Start()
{
hours = days * 24;
}
这是因为要用另一个变量初始化一个变量,你用来初始化另一个的变量必须是static
或const
变量。
这个 const
的例子也可以工作:
public const int days = 3;
public int hours = days * 24;
我认为这里的关键是 C# 需要知道什么时候实际 运行 你的 days * 24
行。假设您启动游戏,然后打开检查器并更改 days
的值 - 您可能也希望更改小时数以反映这一点。
最简单的方法是在需要时 运行 它 - 即当您需要 'Hours' 的值时,那就是 运行 [=11] =].最好使用 C# 属性:
public int Days = 3;
public int Hours{
get {
return Days * 24;
}
}
现在您可以像使用字段一样使用 Hours
,无论您何时更改 'Days' 字段,它始终是正确的小时数,因为它会计算它为您点播