这是我第一次使用2D阵列,似乎无法解决这个问题。我在团结工作,我有一个代码底部的每个方法的按钮。每次按下按钮,调试都会显示正确调用该方法,甚至可以正确地将其添加到先前存储的值中。
问题是当我尝试将某些内容分配给存储在数组中的值时,它不会检索正确的值。所以在这种情况下,如果我调用add addenergy();
2次调试将显示
“添加1到0,02”
即使我在开始时将其设置为3。检查值仍然是3,tab也会显示3.我做错了什么?
using UnityEngine;
using System.Collections;
public class factioncontroller : MonoBehaviour {
public int[,] skills = new int[4, 3];
public int check;
// Use this for initialization
void Start () {
skills[0, 0]=3;
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown("tab")) { Debug.Log(skills[0, 0]);
check = skills[0, 0];
}
public void addskill(int x, int y) { skills[x, y] += 1; Debug.Log("added 1 to" + x + "," + y + skills[x, y]); }
public void addenergy() { addskill(0,0); }
public void addregen() { addskill(0, 1); }
public void addmovement() { addskill(0, 2); }
public void addusesS() { addskill(1, 0); }
public void addduration() { addskill(1, 1); }
public void addemp() { addskill(1, 2); }
public void addrangeD() { addskill(2, 0); }
public void adddistract() { addskill(2, 1); }
public void addstun() { addskill(2, 2); }
public void addrangeG() { addskill(3, 0); }
public void addusesG() { addskill(3, 1); }
public void addmobi() { addskill(3, 2); }
}
答案 0 :(得分:0)
我不知道您调用方法的顺序,但如果您的目的是初始化skills
,那么为什么不在构造函数中初始化它呢?
删除Start()
方法,然后添加以下方法:
// Use this for initialization
public factioncontroller()
{
skills[0, 0] = 3;
}
在此类上调用 任何 实例方法之前,系统会保证。
根据您的体验,似乎Start()
根本没有被调用,或者在 addenergy()
之后被称为