首页 > 解决方案 > 强制 Sprite Renderer 渲染一个 Sprite

问题描述

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

好的,所以我有一个问题,有时我的玩家的精灵似乎是不可见的。到目前为止,我可以将项目构建到我的移动设备上,一切正常。然而,当第二个关卡完成时(现在我只有两个用于测试的关卡),游戏进入了死亡场景。然后它要求用户继续或退出。如果继续,玩家将被带到最后到达的级别。代码有效,但精灵现在不可见。有时我可以暂停游戏,退出并返回主菜单,再次单击播放并重新开始,播放器再次出现。有时它会使情况变得更糟,因为子弹甚至无法渲染。我不知道是什么导致了这样的事情。所以我有这段代码希望强制精灵渲染它是否想要。

下面是手机屏幕截图: 在此处输入图像描述

在右侧,您可以看到子弹在发射,但看不到玩家。您可以通过子弹轨迹中的偏移量来判断玩家正在移动。(如果你仔细看)

我正在使用 Unity 2019.0.1a 测试版

标签: c#unity3drender

解决方案


推荐阅读