Unity:(js)将资产文件夹中的 PNG 加载到 UI 图片

Unity: (js) Loading PNGs in assets folder to UI Image

在我的 Unity 项目中,在 canvas 下,我创建了一个空白 UI 图像。 另一方面,在资产文件夹中,我有多个 PNG。 我希望通过脚本将 UI 图像设置为文件夹中的随机 PNG。 我怎么做?我应该将脚本附加到 UI 图像还是 UI canvas?有人可以给我看一个示例脚本(js,不是 c#)吗?谢谢

创建一个名为 Resources 的文件夹和一个名为 Sprites 的子文件夹。将你的精灵放在这个文件夹中(图像必须在图像导入设置中具有 Sprite 纹理类型,正如@SurajS 所指出的)。

创建一个图像元素并将以下 UnityScript 附加到它:

function Start () {
    var image : UnityEngine.UI.Image = GetComponent.<UnityEngine.UI.Image>();
    var sprites : Object[] = Resources.LoadAll("Sprites", Sprite);
    image.sprite = sprites[Random.Range(0, sprites.Length)] as Sprite;
}

更好的解决方案(更高效)

将以下脚本附加到您想要的游戏对象(您的图像、您的 canvas 甚至是空的)

#pragma strict

public var image : UnityEngine.UI.Image;

public var sprites : Sprite[];

function Start () {
    image.sprite = sprites[Random.Range(0, sprites.Length)] ;
}

然后,在检查器中,将包含图像组件的游戏对象拖放到 image 字段中,然后将您想要的所有精灵放在 sprites 字段中。


要获取精灵的名称,您可以按照以下步骤操作:

var names : String[] = new String[sprites.Length] ;
for (var i = 0 ; i < names.Length ; ++i ) {
    names[i] = sprites[i].name;
}