我已经开始制作一款新游戏了,我希望根据我给它的字母或数字来改变精灵表中的字母。我在Photoshop中创建了一个只有数字的精灵表来测试它并将其作为Sprite导入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;
}
}
<小时/> 我在switch语句中得到一个错误,如果它是例如数字1,它表示数组索引超出范围,当我将lettersAll设置为public时,它有0个精灵。我究竟做错了什么 ?我一直试图解决这个问题,但没有任何作用:/
答案 0 :(得分:0)
你的spritesheet是&#34;资源&#34;夹? 对于你的情况,精灵文件应该在&#34; Resources / Textures /&#34;
之下更新: 我能够复制问题并通过确保以下事项正确解决它:
答案 1 :(得分:0)
精灵表的精灵不能像这样被访问,因为精灵表本身就是一个纹理。
Unity在内部将其视为纹理,同时允许您将其设置为多个并将其分解,只能通过指定的引用访问它。
我建议不要将图片放在参考资料中,因为它会在游戏开始时立即加载,而不是根据需要加载。 试试这个
之后的UI Sprite Manager