【问题标题】:Unity: (js) Loading PNGs in assets folder to UI ImageUnity:(js)将资产文件夹中的PNG加载到UI图像
【发布时间】:2017-12-17 20:45:32
【问题描述】:

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

【问题讨论】:

    标签: unity3d unityscript


    【解决方案1】:

    创建一个名为 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;
    }
    

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

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

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

    【讨论】:

    • 另外,确保 PNG 的导入设置设置为 Sprite 或 UI 2D。
    • 谢谢,成功了!一个后续问题:同时,我想创建一个包含 PNG 名称的字符串数组,有没有办法做到这一点?
    • 检查我更新的答案。如果对您有帮助,请不要忘记接受。
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2017-02-13
    • 1970-01-01
    • 2014-10-03
    相关资源
    最近更新 更多