Принудительный рендеринг спрайтов для рендеринга спрайта

#c# #unity3d #render

#c# #unity-игровой движок #визуализация

Вопрос:

 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 amp;amp; !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; 
        }
    }
}
  

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

Вот скриншот экрана мобильного устройства: введите описание изображения здесь

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

Я использую Unity 2019.0.1бета-версию

Комментарии:

1. Вы использовали DontDestroyOnLoad для чего-нибудь в своей игре? Другими словами, есть ли у вас что-нибудь, что перемещается из одной сцены в другую без повторного создания экземпляра?

2. Каков порядок сортировки слоев для маркеров и проигрывателя? Он должен быть выше фона.

3. Я смог устранить проблему, снова импортировав изображение проигрывателя. Я не знаю почему, но иногда изображения исчезают или не отображаются Unity. По крайней мере, это верно в этой альфа- / бета-версии, которую я использовал. (НИКОГДА больше не использовать ничего, что не было официально выпущено! ) Это была такая странная проблема!