Как я могу получить изображения из "assets / resource / mat"? - PullRequest
0 голосов
/ 26 мая 2019

У меня есть несколько изображений в "assets / resource / mat". Я хочу получить эти изображения и поместить их в массив. Но когда я пытаюсь получить эти изображения, я получаю ArrayIndexOutOfBoundsException. Я думаю, что есть проблема с методом Resource.LoadAll ("mat"). Но я не могу это исправить. Пожалуйста, помогите мне

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class test : MonoBehaviour
{
    private string t;
    public Sprite[] Icons;

    void Start()
    {
        Object[] loadedIcons = Resources.LoadAll("mat");
        Icons = new Sprite[loadedIcons.Length];

        for (int x = 0; x < loadedIcons.Length; x++)
        { 
            Icons[x] = (Sprite)loadedIcons[x];
            Debug.Log("Loading....");
        }

         GameObject sp = new GameObject();
         sp.GetComponent<SpriteRenderer>().sprite = Icons[0];
    }
}

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Я не уверен, но я думаю, что вместо Sprite сначала нужно загрузить Texture2D, а затем создать Sprite из него.

Также обратите внимание, что вы использовали GetComponent<SpriteRenderer>() во вновь созданном пустом GameObject, поэтому очевидно, что никогда не будет присоединен SpriteRenderer компонент. Вместо этого используйте AddComponent.

Sprite[] Icons;
Texture2D LoadedTextures;

private void Start()
{
    LoadedTextures = (Texture2D[])Resources.LoadAll("mat", typeof(Texture2D));
    Icons = new Sprite[loadedIcons.Length];

    for (int x = 0; x < loadedIcons.Length; x++)
    { 
        Icons[x] = Sprite.Create(
            LoadedTextures[x], 
            new Rect(0.0f, 0.0f, LoadedTextures[x].width, LoadedTextures[x].height), 
            new Vector2(0.5f, 0.5f), 
            100.0f);
    }

     GameObject sp = new GameObject();

     // Note that here you created a new empty GameObject
     // so it obviously won't have any component of type SpriteRenderer
     // so add it instead of GetComponent
     sp.AddComponent<SpriteRenderer>().sprite = Icons[0];
}
0 голосов
/ 26 мая 2019

Загрузка всех изображений из определенной папки с помощью LINQ будет выглядеть следующим образом ...

using UnityEngine;
using System.Linq;

public class Four : MonoBehaviour
{    
    public Sprite[] icons;

    void Start()
    {
        icons= Resources.LoadAll("met", typeof(Sprite)).Cast<Sprite>().ToArray();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...