Принуждение Рендерера Спрайта к Рендеру Спрайта - PullRequest
0 голосов
/ 04 марта 2019
using UnityEngine;

public class PlayerLoad : MonoBehaviour
{
    [SerializeField]
    private Sprite pSprite;

    private void Start()
    {
        LoadSprite(this.gameObject, pSprite);
    }

    void LoadSprite(GameObject p1, Sprite pSprite = null) // p1 = the player's gameobject
    {
        var sr = p1.GetComponent<SpriteRenderer>();

        if (sr == null)// If no sprite renderer exist
        {
            sr = p1.AddComponent<SpriteRenderer>();
        }

        if (sr != null && !sr.enabled)// If sprite renderer exist but isn't active
        {
            sr.enabled = true;
        }

        if (sr.sprite == null)// If no sprite exist, adds one
        {
            p1.GetComponent<SpriteRenderer>().sprite = pSprite; 
        }
    }
}

Хорошо, у меня проблема с тем, что иногда спрайт моего игрока кажется невидимым.На данный момент я могу построить проект на моем мобильном устройстве, и все работает отлично.Однако, когда второй уровень завершен (сейчас у меня есть только два уровня, которые я использую для тестирования), игра переходит на сцену смерти.Затем он попросит пользователя продолжить или выйти.Если продолжить, игрок переходит на последний достигнутый уровень.Код работает, но спрайт теперь невидим.Иногда я могу поставить игру на паузу, выйти и вернуться в главное меню, снова нажать кнопку воспроизведения и начать все сначала, и игрок снова появляется.В других случаях это усугубляет ситуацию, потому что пули даже не рендерится.Я понятия не имею, что может вызвать такую ​​вещь.Так что у меня есть этот код в надежде заставить спрайт визуализировать, хочет он этого или нет.

Вот снимок экрана мобильного экрана: enter image description here

Справа вы видите выстрелы пуль, но игрок не виден.Вы можете сказать, что игрок движется по смещению в траектории пули.(Если вы присмотритесь)

Я использую Unity 2019.0.1a Beta

...