Unity Resources.Load <Sprite> vs Sprite

Fer*_*jka 5 resources load renderer sprite unity-game-engine

我试图用这段代码改变我的对象的图像(用作Sprite强制转换):

GetComponent<SpriteRenderer>().sprite = Resources.Load("GameObjects/Tiles/Hole") as Sprite;
Run Code Online (Sandbox Code Playgroud)

它不起作用,但这工作(使用<Sprite>):

GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("GameObjects/Tiles/Hole");
Run Code Online (Sandbox Code Playgroud)

有什么不同?

Fun*_*onR 3

Resources.Load("GameObjects/Tiles/Hole") as Sprite;
Run Code Online (Sandbox Code Playgroud)

您的资源文件夹中还有另一个“漏洞”。这个其他洞不是一个Sprite。因此,当您使用as Sprite它时,它根本无法转换为 1 并且不会抛出异常(在该行上),因为:

as 运算符类似于强制转换操作。但是,如果无法进行转换,as 将返回 null 而不是引发异常。


Resources.Load<Sprite>("GameObjects/Tiles/Hole");
Run Code Online (Sandbox Code Playgroud)

在工作代码中,您指定所需的文件Sprite,以便它找到正确的文件。