2016-09-11 2 views
0

Я начал работу над новой игрой, и я хочу сделать буквы из листа спрайтов, которые меняются с учетом буквы или цифры, которую я им даю. Я создал только лист спрайтов только в Photoshop, чтобы проверить его и импортировать в Unity как Sprite. Тогда в сценарии я сделал это:C# Unity - Изменение спрайта из листа спрайтов

public string currLetter; 

public string lettersName; 

Sprite[] lettersAll; 

void Awake() { 

    lettersAll = Resources.LoadAll<Sprite> ("Textures/" + lettersName); 
} 

void Update() { 

    switch (currLetter) { 

    case "0": 
     gameObject.GetComponent<SpriteRenderer>().sprite = lettersAll[0]; 
     break; 

    case "0": 
     gameObject.GetComponent<SpriteRenderer>().sprite = lettersAll[1]; 
     break; 
    } 
} 


Я получаю сообщение об ошибке в операторе переключателя, где, если это, например, номер 1, это говорит о том, что индекс массива выходит за пределы диапазона, и когда я установил lettersAll публике было 0 спрайтов. Что я делаю не так ? Я пытался исправить это весь день, но ничего не работает:/

Обновление:
Изображение Sprite Sheet:

enter image description here

+0

Похоже, что 'Resources.LoadAll' терпит неудачу. Вы можете это доказать, выполнив 'Debug.Log (lettersAll .Length);' в функции 'Resources.LoadAll'. Дайте мне знать султ этого журнала. Кроме того, в какой каталог вы поместили текстуры? Кроме того, выберите «Текстура» и поставьте для него изображение параметров импорта. – Programmer

+0

Папка «Текстуры» находится в разделе «Проекты/Название проекта/Активы» и «Параметры импорта», о которых стоит упомянуть, заключается в том, что я изменил ее на Sprite и установил режим Sprite на Multiple, чтобы я мог вырезать буквы, все остальное находится в deffault. –

ответ

0

Ваш spritesheet в папке "Ресурсы"? В вашем случае файл спрайт должен быть в разделе «Ресурсы/Textures /»

Обновлено: Я был в состоянии дублировать эту проблему и решить ее, убедившись, что следующие вещи правильны:

  1. Spritesheet под/Resources
  2. В спрайте, который вы загружаете, есть несколько спрайтов внутри. Если вы видите скриншот, опубликованный здесь, spritesheet A, B, C, D не будет загружен, потому что у них нет спрайтов внутри, хотя режим установлен в несколько. Spritesheet Е будет загружен правильно

Spritesheet image

+0

Не работал :/Я пытался помещать Активы вместо ресурсов, но ничего не работает –

+0

Пожалуйста, проверьте решение для обновления – Leo

+0

Ничего не работает ... Я буквально пробовал все, что мог найти ... Нет ошибок компилятора, но когда я тестирую игру, я получаю массив Index Out Of Range и нет ничего под письмамиAll –

0

спрайтов из спрайтов листа не могут быть доступны, как это, так как сам спрайт лист представляет собой текстуру.

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

Я бы порекомендовал не размещать свои изображения в разделе «Ресурсы», так как он загружается сразу же в начале игры, а не под нагрузкой. Попробуйте UI Sprite Manager, который следует за этим

Смежные вопросы