C# 以编程方式将精灵指定给新图像
我有一个结构InventorySlot,它保存一个图像,还有一个Item类保存一个精灵。当我点击一个特定的库存插槽时,我想装备该物品,但是当我尝试将精灵分配给一个新的库存插槽对象上的图像时,它会出现一个空引用错误C# 以编程方式将精灵指定给新图像,c#,unity3d,C#,Unity3d,我有一个结构InventorySlot,它保存一个图像,还有一个Item类保存一个精灵。当我点击一个特定的库存插槽时,我想装备该物品,但是当我尝试将精灵分配给一个新的库存插槽对象上的图像时,它会出现一个空引用错误 public override void Click(Inventory inventory) { var inventorySlot = new InventorySlot(); inventorySlot.Image.sprite = Item.sprite; //
public override void Click(Inventory inventory)
{
var inventorySlot = new InventorySlot();
inventorySlot.Image.sprite = Item.sprite; // TODO: This line is throwing an exception
inventorySlot.InventoryItem = this;
inventory.armourSlot.EquipItem(inventorySlot);
}
有什么方法可以做到这一点吗?创建InventorySlot的新实例时,它不会自动为其中的变量创建组件。所以在初始化inventorySlot之后,您需要将Image设置为希望它使用的任何Image组件。这样它就不是空的 或者,我建议总体上采取不同的做法
- 在InventorySlot结构上方添加[System.Serializable],以便可以在inspector中查看它
- 在此脚本中列出InventorySlot
- 在inspector中指定所有图像引用
- 然后,当你装备一个物品时,不要创建一个全新的库存槽,只需从列表中更改相应槽位的精灵即可