我再次在 StackOverflow 上尋求幫助,因為我遇到了一個我無法解決的錯誤。對于 Context,我對 Unity 還很陌生,所以我遵循了一個教程。這是鏈接:[https://www.youtube.com/watch?v=Oie-G5xuQNA] 為了更方便地訪問代碼,我還將在此處發布:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ButtonInfo : MonoBehaviour
{
public int ItemID;
public Text PriceText;
public Text QuantityText;
public GameObject ShopManager;
// Update is called once per frame
void Update()
{
PriceText.text = "Price: $" ShopManager.GetComponent<ShopManagerScript>().shopItems[2, ItemID].ToString();
QuantityText.text = ShopManager.GetComponent<ShopManagerScript>().shopItems[3, ItemID].ToString();
}
}
這也是第二個腳本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class ShopManagerScript : MonoBehaviour
{
public int [,] shopItems = new int[5,5];
public float coins;
public Text CoinsText;
void Start()
{
CoinsText.text = "Coins" coins.ToString();
// ID's
shopItems[1, 1] = 1;
shopItems[1, 2] = 2;
shopItems[1, 3] = 3;
shopItems[1, 4] = 4;
// Price
shopItems[2, 1] = 10;
shopItems[2, 2] = 20;
shopItems[2, 3] = 30;
shopItems[2, 4] = 40;
// Quantity
shopItems[3, 1] = 1;
shopItems[3, 2] = 1;
shopItems[3, 3] = 1;
shopItems[3, 4] = 1;
}
public void Buy()
{
GameObject ButtonRef = GameObject.FindGameObjectWithTag("Event").AddComponent<EventSystem>().currentSelectedGameObject;
if(coins >= shopItems[2, ButtonRef.GetComponent<ButtonInfo>().ItemID])
{
coins -= shopItems[2, ButtonRef.GetComponent<ButtonInfo>().ItemID];
shopItems[3, ButtonRef.GetComponent<ButtonInfo>().ItemID] ;
CoinsText.text = "Coins" coins.ToString();
ButtonRef.GetComponent<ButtonInfo>().QuantityText.text = shopItems[3, ButtonRef.GetComponent<ButtonInfo>().ItemID].ToString();
}
}
}
最后一件事:這是錯誤訊息本身:NullReferenceException:物件參考未設定為物件 ShopManagerScript.Buy () 的實體(在 Assets/Scrips/UI/Shop System/ShopManagerScript.cs:43)
抱歉,如果粘貼這么多代碼有點亂,但我只想回答我的問題。所以,如果有人能幫助我,那將不勝感激!:)
uj5u.com熱心網友回復:
看起來在您的 Buy() 方法中,您正在呼叫AddComponent以將 EventSystem 添加到標記為“Event”的物件中。這個物件很可能已經有一個 EventSystem ,所以它不能添加另一個,它提供了一個對您的 ButtonRef 物件的空參考。您很可能希望在那里呼叫 GetComponent 來獲取已經存在的 EventSystem 組件
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/408542.html
標籤:
上一篇:如何避免異步無效?
