Mới được chia sẻ cái link trong đó có đoạn code sau.
public class Character : MonoBehaviour
{
[SerializeField]
private int maxHealthPoint;
private int healthPoint; // Notice that I removed [SerializeField] on purpose
public int HealthPoint { get { return healthPoint; } }
public int GetHealthPoint() { return healthPoint; }
public void Damage(float value)
{
healthPoint -= value;
if (healthPoint < 0)
healthPoint = 0;
}
public void Heal(float value)
{
healthPoint += value;
if (healthPoint > maxHealthPoint)
healthPoint = maxHealthPoint;
}
}
mục đich của hàm Heal (float value)
thay vì public thuộc tính healthPoint
và cộng trừ trực tiếp là để đảm bảo healthPoint
không vượt quá ngưỡng.
Riêng mình thấy có thể sử dụng property thay vì đống rắc rối đó.
public class Character : MonoBehaviour
{
private int maxHealthPoint;
private int healthPoint;
public HealthPoint {
get => healthPoint;
set {
healthPoint = Math.Min(maxHealthPoint, healthPoint + value);
}
}
}
500 anh em cho ý kiến để mở mang thêm.