【发布时间】:2021-02-14 15:32:20
【问题描述】:
我有一个单元预制件,其中有一个带有 SpriteRenderer 的游戏对象。我正在实例化一个预制件的多个实例并为每个实例提供一个精灵。第一个单元格实例显示给定的精灵,但第二个不显示。
在这里,我创建了两个 Cell 实例,并使用来自 mIconManager 的 sprite 为 Cell 提供:
private void PopulateCells()
{
for (var i = 0; i < 2; i++)
{
GameObject goPrefab = Instantiate(goRawPrefab, CalculateCellPosition(i), Quaternion.identity, trBoard);
CellController cellController = goPrefab.GetComponent<CellController>();
cellController.FillContent(mIconManager.getSprite(i), i);
}
}
这是来自 CellController 脚本的 sn-p 附加到 Cell:
private void Awake()
{
mIcon = GameObject.Find("IconSprite").GetComponent<SpriteRenderer>();
mCardBg = GameObject.Find("CardBg").GetComponent<SpriteRenderer>();
}
public void FillContent(Sprite sprite, int index)
{
mSprite = sprite;
mIcon.sprite = mSprite;
}
这是我的Cell 预制件:
当我运行代码时,预制件的第二个实例没有得到精灵。
当游戏运行时,我在检查器中检查了第一个预制件的SpriteRenderer,它为精灵显示anchovies - 我通过FillContent() 方法提供的那个。有趣的是,第二个预制件的SpriteRenderer 组件显示EMPTY sprite。
游戏运行时第一个 Prefab 的 SpriteRenderer:
游戏运行时第二个 Prefab 的 SpriteRenderer:
我错过了什么吗?我在互联网上搜索,发现一些帖子说“SpriteRenderer 没有第二次加载 sprites”,但他们没有回答,回答的帖子也没有解决我的问题。
附:我还尝试为Cell 预制件的两个实例设置相同的精灵 - 仍然没有成功。
附注 2。我记录了给Cell 预制件的两个实例的精灵,它们不是空的或空的。我什至做了Debug.Log(mIcon.sprite),这两个实例都记录了我提供的精灵的名称。
编辑:
为两个实例提供相同的精灵时记录:
public void FillContent(Sprite sprite, int index)
{
Debug.Log("hop, spriteName : " + sprite + ", prefabIndex : " + index);
mSprite = sprite;
mIcon.sprite = sprite;
}
【问题讨论】: