c# - 以编程方式将精灵分配给新图像
问题描述
我有一个包含图像的结构 InventorySlot 和一个包含 Sprite 的 Item 类。当我单击特定的库存槽时,我想装备该物品,但是当我尝试将 Sprite 分配给新 InventorySlot 对象上的图像时,它会出现空引用错误。
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] 以便可以在检查器中查看。
- 在此脚本中列出 InventorySlot。
- 在检查器中分配所有图像引用。
- 然后当你装备一个物品时,而不是创建一个全新的 InventorySlot,只需从你的列表中更改相应插槽的精灵。
推荐阅读
- html - 使用 asp.net 显示不带标签的 DB HTML 文本
- apache - 在记录中拆分 CSV 文件并保存为 csv 文件格式 - Apache NIFI
- python - pandas 批处理 API 请求
- ios - 在本机反应中,滚动视图不在 PanResonder 内滚动
- ruby-on-rails - Youtube Data Api:如何为来自 Youtube 趋势的每个视频添加重定向链接
- android - 在 Android 应用服务上使用 java.awt.robot
- c# - 从 asp.net web 服务 c# 调用 aspx.cs 方法
- colors - Sublime 的 UML 语法高亮显示
- swift - Swift BitConverter.DoubleToInt64Bits 等效
- selenium - 使用 selenium webdriver 自动化 Angular 登录页面