Это Sprite:Unity Sprite не меняется по команде?
Предполагается изменить в одну из этих спрайтов (в зависимости от того, что загружается)
Когда коллайдер (LoseCollider) вступает в контакт с другой игровой объект:
Моя проблема в том, что когда LoseCollider запускается, Spite не меняется и никаких ошибок не бросается на меня.
Соответствующий код:
HealthManager.cs
public static Sprite[] healthSprites;
public static int totalHealth = 3;
public static Sprite Health1;
public static Sprite Health2;
public static Sprite Health3;
LoseCollider.cs
void OnTriggerEnter2D (Collider2D trigger) {
if (HealthManager.totalHealth == 3) {
setSprite();
HealthManager.totalHealth --;
} else {
levelManager = GameObject.FindObjectOfType<LevelManager>();
levelManager.LoadLevel("Lose");
}
}
void setSprite() {
gameObject.GetComponent<SpriteRenderer>().sprite = HealthManager.Health2;
}
Я попытался отправить всю необходимую информацию, пожалуйста, дайте мне знать, если мне нужно, чтобы включить Больше.
Вы уверены, что 'setSprite' становится называется? Вы уверены, что «HealthManager.Health2» действительно связан с спрайтом Health2, а не с Health3 или чем-то еще? –
setSprite вызывается (я опустил оператор печати в методе). Из того, что я прочитал (не эксперт по программированию менее года опыта), эта строка: gameObject.GetComponent(). Sprite = HealthManager.Health2; Должен вызвать health2. Я не уверен, как я могу проверить связь –
Memj
Что значит «Должен вызвать health2»? У вас действительно есть ваш спрайт Health2, связанный с «public static Sprite Health2» на вашем объекте HealthManager? – slumtrimpet