Проект работает отлично, пока не будет достигнута определенная точка, а затем внезапно начнет бросать NRE. Вот некоторые исходный код:Strange NullReferenceException в Unity Script (C#)
void Start(){
myhealth = GetComponentInChildren<HealthBar>();
if(myhealth == null)
{
Debug.Log("myhealth is null !!"); //It never outputs something here
}
}
//And Here it works :
public void ApplyDamage(float amount)
{
myhealth.DamageEnemy(amount);
if (GetHealth() <= 0)
{
[...]
}
}
//Then suddenly it throws NRE's here when accesing it from another Script :
public void AddHealth(float a)
{
myhealth.HealEnemy(a); //Here
}
public float GetHealth()
{
return myhealth.GetHealth(); //And here
}
В сценарии HealthBar есть эти переменные, и эти функции:
public float maxHealth;
public float currentHealth;
private float originalScale;
public void DamageEnemy(float giveDamage)
{
currentHealth -= giveDamage;
}
public void HealEnemy(float heal)
{
currentHealth += heal;
}
public float GetHealth()
{
return currentHealth;
}
Там, кажется, не является причиной для сценария, чтобы бросать ЯРД, но он все еще делает.
Является ли весь код в кулачном блоке по тому же сценарию? – Theraot
да это. второй блок - другой скрипт – Toreole
Где вы объявляете переменную _myhealth_? Используете ли вы тот же экземпляр первого класса, когда получаете NRE? Ваш код выше пропускает какой-то контекст. В частности, код, который вызывает Start, ApplyDamage и AddHealth – Steve