Skip to content

构造函数

unity-csharp-constructor-system

构造函数是什么

构造函数就是“对象出生时自动执行的方法”。你写一个类,然后用 new 创建对象时,C# 会自动调用构造函数,用来给字段、属性设置初始值。

c
public class PlayerStats
{
    public string Name;
    public int Hp;

    public PlayerStats(string name, int hp)
    {
        Name = name;
        Hp = hp;
    }
}

PlayerStats stats = new PlayerStats("Knight", 100);

这里 new PlayerStats("Knight", 100) 会自动调用:

c
public PlayerStats(string name, int hp)

构造函数三条硬规则

  1. 名字必须和类名一样。
  2. 没有返回类型,不能写 void
  3. 通常用来初始化对象,而不是写复杂游戏逻辑。

错误例子:

c
public void PlayerStats()
{
}

这不是构造函数,因为它写了 void,它只是一个普通方法。

常见类型

无参构造函数:

c
public PlayerStats()
{
    Name = "Player";
    Hp = 100;
}

有参构造函数:

c
public PlayerStats(string name, int hp)
{
    Name = name;
    Hp = hp;
}

构造函数重载:

c
public PlayerStats()
{
    Name = "Player";
    Hp = 100;
}

public PlayerStats(string name, int hp)
{
    Name = name;
    Hp = hp;
}

构造链 this(...)

c
public PlayerStats() : this("Player", 100)
{
}

意思是:无参版本把活交给有参版本做,避免重复代码。

Unity 特别重点

普通 C# 类可以这样创建:

c
PlayerStats stats = new PlayerStats("Knight", 100);

但 Unity 的 MonoBehaviour 脚本不要这样写:

c
PlayerController controller = new PlayerController(); // 不推荐

Unity 组件脚本是挂在 GameObject 上,由 Unity 引擎管理生命周期。初始化组件引用时,优先用:

c
void Awake()
{
    rb = GetComponent<Rigidbody>();
}

简单记: 普通数据类:用构造函数。 Unity 组件脚本:用 Awake() / Start()

参考链接

文章评价

读完这篇,留下你的看法

暂无审核通过的评价。

登录账号后才能评价。

本站访客数0总站访问量0本页访问量0