如何从统一检查器将值传递给构造函数

How to pass value to constructor from unity inspector

我创建了一个基础摘要 Character class(它扩展了 MonoBehaviour),其中包含一些数据,其中之一是 maxHealth。我不希望 maxHealth 被改变,所以我做了 readonly 并使用 属性 来改变它 (public float MaxHealth { get; }).

我希望不同的角色具有不同的最大生命值,所以我尝试使用构造函数并在那里传递最大生命值,但我无法将值从统一检查器传递给构造函数。

有没有人知道如何从 Unity 检查器或任何其他方式将值传递给构造函数来实现我正在尝试做的事情(为不同的角色制作只读的 hp 值并能够编辑它们来自统一检查员)。

MonoBehaviour 实例是使用 AddComponent 创建的,而不是使用 new() 创建的。因为您没有使用 new 关键字创建实例,所以没有可访问的构造函数。

如果您想要一个可以从检查器设置的变量,而不是 public,请在 private/protected 字段上使用 [SerializeField]

[SerializeField]
private float maxHealth;
public float MaxHealth => maxHealth; // Allow others to use this value, but not change it