C# 需要统一的公共类,但必须添加静态

C# 需要统一的公共类,但必须添加静态,c#,unity3d,static,public,C#,Unity3d,Static,Public,我想通过将一个变量作为公共变量编写脚本,使其在unity inspector中可编辑-例如, public int days=3- 然后使用另一个私有变量,该变量使用天(并将用户友好的输入转换为现在对我的代码有用的数字),例如 private int hours=days*24。但是,我不得不将天设置为公共静态int,以便通过小时等式访问。这意味着它不再可在inspector中更改。我认为,这是我理解c#的一个基本问题,任何关于我应该做什么的提示都会真正帮助初学者 public int days

我想通过将一个变量作为公共变量编写脚本,使其在unity inspector中可编辑-例如,
public int days=3
- 然后使用另一个私有变量,该变量使用
(并将用户友好的输入转换为现在对我的代码有用的数字),例如
private int hours=days*24
。但是,我不得不将
设置为
公共静态int
,以便通过
小时
等式访问。这意味着它不再可在inspector中更改。我认为,这是我理解c#的一个基本问题,任何关于我应该做什么的提示都会真正帮助初学者

public int days = 3;
private int hours = days * 24;

谢谢

如果提供完整的脚本示例,效果会更好。 仔细阅读你的问题,这就是你目前正在做的:

public int days = 3;
private int hours = days * 24;
初始化函数中的
hours
变量,这样就可以了。
启动
唤醒
功能通常用于以下情况:

public int days = 3;
private int hours;

void Start()
{
    hours = days * 24;
}
这是因为要用另一个变量初始化变量,用于初始化另一个变量的变量必须是
静态
常量
变量

使用
const
的这个例子也可以:

public const int days = 3;
public int hours = days * 24;

如果提供一个完整的脚本示例,效果会更好。 仔细阅读你的问题,这就是你目前正在做的:

public int days = 3;
private int hours = days * 24;
初始化函数中的
hours
变量,这样就可以了。
启动
唤醒
功能通常用于以下情况:

public int days = 3;
private int hours;

void Start()
{
    hours = days * 24;
}
这是因为要用另一个变量初始化变量,用于初始化另一个变量的变量必须是
静态
常量
变量

使用
const
的这个例子也可以:

public const int days = 3;
public int hours = days * 24;
我认为这里的关键是C#需要知道何时实际运行
days*24
行。假设您启动游戏,然后打开inspector并更改
天的值
——您可能也希望更改小时以反映这一点

最简单的方法是在需要时运行它,即当需要“小时”值时,即运行
days*24
。最好使用C#属性:

public int Days = 3;

public int Hours{
    get {
        return Days * 24;
    }
}
现在,您可以像使用字段一样使用
Hours
,无论何时更改该“Days”字段,它都将始终是正确的小时数,因为它会根据需要为您计算。

我认为这里的关键是C需要知道何时实际运行
Days*24
行。假设您启动游戏,然后打开inspector并更改
天的值
——您可能也希望更改小时以反映这一点

最简单的方法是在需要时运行它,即当需要“小时”值时,即运行
days*24
。最好使用C#属性:

public int Days = 3;

public int Hours{
    get {
        return Days * 24;
    }
}

现在,您可以像使用字段一样使用
Hours
,无论何时更改“Days”字段,它都将始终是正确的小时数,因为它会根据需要为您计算。

可能是因为您在声明中设置了小时数。将方程移动到start方法,这应该会起作用。这是关于,而不是。可能是因为您在声明中设置了小时数。将方程移动到开始方法,这应该会起作用。这是关于,而不是。很好,我已经编辑了问题,谢谢。好的,我稍后再初始化。简单。谢谢说得好,我已经编辑了这个问题,谢谢。好的,我稍后再初始化。简单。谢谢啊,所以做一个小函数差不多。感谢您抽出时间回答!没错-属性是一种特殊类型的小型函数(例如,如果您想设置
小时数
并更新
,也可以添加
)。如果您以前使用过任何Java,那么它们本质上只是编写Java getter/setter的一种非常好的方法。一点问题也没有-我祝你的项目一切顺利
集合
外观的快速示例:
集合{Days=value/24;}
-这允许您执行,例如
Hours=48
将为您设置为2。啊,所以请执行一个小功能。感谢您抽出时间回答!没错-属性是一种特殊类型的小型函数(例如,如果您想设置
小时数
并更新
,也可以添加
)。如果您以前使用过任何Java,那么它们本质上只是编写Java getter/setter的一种非常好的方法。一点问题也没有-我祝你的项目一切顺利
集合
外观的快速示例:
集合{Days=value/24;}
-这允许您执行,例如
Hours=48
天数
将为您设置为2。