在统一中,我不断收到错误消息“NullReferenceException:Object reference not set to a object of object”:
listOfBanks [0] .Deposit(50);
和
accntBlnce.text =“帐户余额:\ n”+ listOfBanks [curBank] .GetBalance()。ToString(“c”);
我在下拉菜单中列出了3个选项,当我调试时。记录数组中的项目数量,我得到3作为我的计数。但我不能对他们做任何事情。 banks变量在检查器中设置为Dropdown对象,在面板中设置为accntBlnce作为文本对象。
代码如下。
Banks.cs
public class Banks : MonoBehaviour {
public Dropdown banks;
public Text accntBlnce;
public Bank[] listOfBanks;
public int curBank = 0;
void Start() {
listOfBanks = new Bank[banks.options.Count];
listOfBanks[0].Deposit(50);
}
void Update() {
curBank = banks.value;
accntBlnce.text = "Account Balance:\n" + listOfBanks[curBank].GetBalance().ToString("c");
}
}
Bank.cs
public class Bank{
public Bank() { }
public Bank(string orgn, float amntToRprt, float blnce) {
origin = orgn;
amountToReport = amntToRprt;
balance = blnce;
}
public string origin { get; set; }
public float amountToReport { get; set; }
public float balance { get; set; }
public bool Deposit(float amnt) {
if (amnt > 0) {
balance += amnt;
if(amnt > amountToReport) {
FlagForReport();
}
return true;
}
else
return false;
}
private void FlagForReport() {
throw new NotImplementedException();
}
public float GetBalance() {
return balance;
}
public bool Withdraw(float amnt) {
if (amnt > 0) {
if (balance >= amnt) {
balance -= amnt;
return true;
}
else
return false;
}
else
return false;
}
public bool Transfer(float amnt, Bank bank) {
if (amnt > 0) {
if (balance >= amnt) {
if(bank.Deposit(amnt))
balance -= amnt;
return true;
}
else
return false;
}
else
return false;
}
}
答案 0 :(得分:2)
这是本周第四次提出阵列问题时遇到同样的问题和相同的解决方案。
你在这里声明了数组:
listOfBanks = new Bank[banks.options.Count];
但是在调用
之前没有创建每个Bank脚本的新实例 listOfBanks[0].Deposit(50);
和listOfBanks[curBank].GetBalance().ToString("c").
声明数组并设置大小 NOT - 与创建脚本的新实例相同。
解决方案是遍历数组并创建每个数组的新实例。
在Banks.cs
中,将Start()
函数中的代码替换为以下代码:
void Start()
{
//Declare how much Bank array should be created
listOfBanks = new Bank[banks.options.Count];
//Now Create instance of each bank
for (int i = 0; i < listOfBanks.Length; i++)
{
//Create new instance of each Bank class
//listOfBanks[i] = new Bank();
listOfBanks[i] = new Bank("", 50, 50);
}
listOfBanks[0].Deposit(50);
}