试图改变 Sprite 图像但没有运气......我做错了什么?

Trying to change Sprite image but no luck... What am I doing wrong?

这让我发疯。我正在使用 Unity3d ver5 并有一个场景,在 (0,0,-10) 处有一个 MainCamera,在 (0,0,0) 处有一个名为 BackGround 的精灵。旋转和缩放分别为 (0,0,0) & (1,1,1)。我有一个名为 BackGround.js 的非常简单的脚本附加到精灵上,它简单直接:

function Start () { 
    var spr = GetComponent.<SpriteRenderer>();
    spr.sprite = Resources.Load("bg") as Sprite;
    Debug.Log(spr.sprite.ToString)  
}

bg 是位于 Assets 文件夹根目录中的 PNG 图像。

我想要实现的是能够使用此脚本选择某个图像用作背景精灵,即我使用精灵启动背景精灵:None,然后使用加载图像脚本。

这不起作用,当我 运行 它时,我最终得到一个蓝色的空白屏幕。 Debug.Log 的更多内容显示如下: NullReferenceException: 在需要对象实例的地方发现了空值。

我在这里做错了什么?谢谢

要通过 Resources.Load 加载您的资源,您的资源需要放置在名为 Resources 的文件夹下,文件夹的父级不一定是 Assets,但是它需要被命名为 Resources.

您的项目下可能有多个 Resources 文件夹,Unity 会查看所有文件夹以尝试找到您的资源。这一点很重要,因为您在调用时可能有相同的资源路径 Resources.Load 但匹配它的多个资源,因此您需要小心。

话虽如此,您应该创建一个名为 Resources 的文件夹并在其中添加您的 png。

我已经找到了解决方案。

的: spr.sprite = Resources.Load("bg") 作为雪碧;

应改为: spr.sprite = Resources.Load("bg", typeof(Sprite)) as Sprite;

现在工作起来很有魅力!