错误 CS0120:非静态字段、方法或 属性 'InventoryUI.newDiamondText' 需要对象引用
Error CS0120: An object reference is required for the non-static field, method, or property 'InventoryUI.newDiamondText'
public class BuyableItem : MonoBehaviour
{
public float PickUpRadius = 1f;
public InventoryItemData ItemData;
private SphereCollider myCollider;
private void Awake()
{
myCollider = GetComponent<SphereCollider>();
myCollider.isTrigger = true;
myCollider.radius = PickUpRadius;
}
private void OnTriggerEnter(Collider other)
{
var inventory = other.transform.GetComponent<InventoryHolder>();
if (!inventory) return;
if (inventory.InventorySystem.AddToInventory(ItemData, 1))
{
Destroy(this.gameObject);
}
}
public static void UpdateDiamondText(PlayerInventory playerInventory)
{
InventoryUI.newDiamondText.text = playerInventory.NumberOfDiamonds.ToString();
}
}
我该如何解决这个问题?
Error CS0120: An object reference is required for the non-static field, method, or property 'InventoryUI.newDiamondText'
这意味着字段(或方法或其他任何东西)newDiamondText
不是静态的,但您正试图使用对 class InventoryUI
的静态引用来调用它而不是通过引用 class.
的 实例
如果您的意思是 newDiamondText
是静态的——即永远只有一个,而不是 class 的每个副本一个——您可以通过标记 newDiamondText
来解决问题作为 static
.
否则,您需要通过引用 InventoryUI
的实例来访问它——例如像(但可能不完全是)这样的东西:
InventoryUI inventoryInstance = new InventoryUI();
inventoryInstance.newDiamondText.text = playerInventory.NumberOfDiamonds.ToString();
public class BuyableItem : MonoBehaviour
{
public float PickUpRadius = 1f;
public InventoryItemData ItemData;
private SphereCollider myCollider;
private void Awake()
{
myCollider = GetComponent<SphereCollider>();
myCollider.isTrigger = true;
myCollider.radius = PickUpRadius;
}
private void OnTriggerEnter(Collider other)
{
var inventory = other.transform.GetComponent<InventoryHolder>();
if (!inventory) return;
if (inventory.InventorySystem.AddToInventory(ItemData, 1))
{
Destroy(this.gameObject);
}
}
public static void UpdateDiamondText(PlayerInventory playerInventory)
{
InventoryUI.newDiamondText.text = playerInventory.NumberOfDiamonds.ToString();
}
}
我该如何解决这个问题?
Error CS0120: An object reference is required for the non-static field, method, or property 'InventoryUI.newDiamondText'
这意味着字段(或方法或其他任何东西)newDiamondText
不是静态的,但您正试图使用对 class InventoryUI
的静态引用来调用它而不是通过引用 class.
如果您的意思是 newDiamondText
是静态的——即永远只有一个,而不是 class 的每个副本一个——您可以通过标记 newDiamondText
来解决问题作为 static
.
否则,您需要通过引用 InventoryUI
的实例来访问它——例如像(但可能不完全是)这样的东西:
InventoryUI inventoryInstance = new InventoryUI();
inventoryInstance.newDiamondText.text = playerInventory.NumberOfDiamonds.ToString();