繁体   English   中英

未从数组中读取的值

[英]values not read from array

这是我第一次使用二维数组,我似乎无法解决这个问题。 我正在统一工作,我在代码底部有一个用于每个方法的按钮。 每次我按下按钮时,调试都会显示该方法被正确调用,甚至将其正确添加到先前存储的值中。

问题是当我尝试将某些内容分配给存储在数组中的值时,它没有检索到正确的值。 所以在这种情况下,如果我调用add addenergy(); 2 次调试会显示

“将 1 添加到 0,02”

即使我在开始时将其设置为 3。 检查值仍为 3,选项卡也将显示 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); }
}

我不知道你调用方法的顺序,但如果你的目的是初始化skills ,那么为什么不在构造函数中初始化它呢?

删除Start()方法,并添加以下一个:

// Use this for initialization
public factioncontroller()
{
    skills[0, 0] = 3;
}

这将保证在您调用此类上的任何实例方法之前被调用。

从您所经历的情况来看,似乎根本没有调用Start() ,或者addenergy()之后addenergy()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM