强制Sprite Renderer渲染Sprite

时间:2019-03-04 04:02:40

标签: c# unity3d render

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

0 个答案:

没有答案