【发布时间】:2019-03-17 03:21:46
【问题描述】:
我有一个管理游戏用户界面的类。
public class GameManager : MonoBehaviour {
ArrayList sprites;
// Use this for initialization
void Start () {
sprites = new ArrayList();
sprites.Add(Resources.Load("bettle", typeof(Sprite)));
sprites.Add(Resources.Load("donut", typeof(Sprite)));
sprites.Add(Resources.Load("icecream", typeof(Sprite)));
sprites.Add(Resources.Load("letter", typeof(Sprite)));
sprites.Add(Resources.Load("paper", typeof(Sprite)));
sprites.Add(Resources.Load("papercup", typeof(Sprite)));
sprites.Add(Resources.Load("puzzle", typeof(Sprite)));
sprites.Add(Resources.Load("sock", typeof(Sprite)));
sprites.Add(Resources.Load("tag", typeof(Sprite)));
sprites.Add(Resources.Load("underwear", typeof(Sprite)));
for(int x = 0; x < 5; x++) {
for(int y = 0; y < 5; y++) {
GameObject go = Resources.Load("ItemPrefab") as GameObject;
go.GetComponent<SpriteRenderer>().sprite = sprites[Random.Range(0, sprites.Count)] as Sprite;
float fx = -2 + 1f * x;
float fy = -2 + 1f * y;
go.transform.position = new Vector3(fx, fy, 0);
Instantiate(go);
}
}
}
}
我使用上述代码在屏幕上多次实例化预制件。 Prefab 包含一个SpriteRenderer,默认情况下,sprite 设置为“tag”(只是一个名称)。
正如您在上面看到的,我从ArrayList 中获取了一个随机精灵并设置了SpriteRenderer 的精灵值。但在屏幕上,精灵仍然是“标签”。
我错过了什么?
注意:
-
ArrayList中的精灵加载成功 - 运行时/编译时未显示错误
【问题讨论】: