C# 启动函数没有被调用#

C# 启动函数没有被调用#,c#,function,class,unity3d,properties,C#,Function,Class,Unity3d,Properties,我得到一个像这样的组件 GameObject currentAuraObject IAura currentAura = currentAuraObject.GetComponent<IAura>(); 变量currentAura本身不是空的,但所有属性都是空的。。我不明白为什么没有调用Start函数并正确初始化属性,我如何解决这个问题?要在类中自动调用函数,您需要创建一个类构造函数,如下所示(函数必须是公共的,没有返回类型,并且与类同名): 要在类中自动调用函数,您需要创建一个类

我得到一个像这样的组件

GameObject currentAuraObject
IAura currentAura = currentAuraObject.GetComponent<IAura>();

变量
currentAura
本身不是空的,但所有属性都是空的。。我不明白为什么没有调用
Start
函数并正确初始化属性,我如何解决这个问题?

要在类中自动调用函数,您需要创建一个类构造函数,如下所示(函数必须是公共的,没有返回类型,并且与类同名):


要在类中自动调用函数,您需要创建一个类构造函数,如下所示(函数必须是公共的,没有返回类型,并且与类同名):


因此,如果您退出Debug.Log(“此处”);在开始时,控制台中没有出现任何内容?脚本被附加到场景中的某个游戏对象上?是的,没错。唤醒也不会触发,更新也不会。如果创建新的空场景,请使用Start()+Debug.Log()附加默认的空脚本,然后将脚本添加到gameobject中,按play,仍然什么都没有?我以前遇到过这个问题,是的,它仍然什么都不会播放。并且控制台日志消息已启用?因此如果您退出Debug.Log(“此处”);在开始时,控制台中没有出现任何内容?脚本被附加到场景中的某个游戏对象上?是的,没错。唤醒也不会触发,更新也不会。如果创建新的空场景,请使用Start()+Debug.Log()附加默认的空脚本,然后将脚本添加到gameobject中,按play,仍然什么都没有?我以前遇到过这个问题,是的,它仍然什么都不会播放。控制台日志消息已启用?尽管这是正确的。在Unity中,如果您的脚本继承自
monobhavior
,则不要使用构造函数。在这种情况下,它会使用构造函数。您可以在
唤醒
启动
功能中进行初始化。也许将
Start
更改为
Awake
可以解决这个问题。尽管这在某种程度上是正确的。在Unity中,如果您的脚本继承自
monobhavior
,则不要使用构造函数。在这种情况下,它会使用构造函数。您可以在
唤醒
启动
功能中进行初始化。也许将
Start
更改为
Awake
可以解决此问题。
public class AirAura : MonoBehaviour, IAura
{
    public ElementalIncreament DamageElementalIncreament { get; set; }
    public ElementalIncreament ResistanceElementalIncreament { get; set; }
    public ElementalIncreament EnemyElementIncreament { get; set; }

    private void Start()
    {
        DamageElementalIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Air, 20);
        ResistanceElementalIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Air, 15);
        EnemyElementIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Earth, 35);
    }
}
public AirAura()
    {
        DamageElementalIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Air, 20);
        ResistanceElementalIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Air, 15);
        EnemyElementIncreament = new ElementalIncreament(ElementalIncreament.ElementalType.Earth, 35);
    }