列表的统一故障

时间:2015-07-02 22:09:47

标签: c# list unity3d bitarray

所以我现在在Unity工作,我使用List来保持我的价值观,但我遇到了一些麻烦。以下是相关功能:

query = """UPDATE table SET being_tracked = %s
              WHERE NOT EXISTS(
                  SELECT 'X' FROM temp_table
                  WHERE table.selected_id = temp_table.selected_id);"""
cur.execute(query, [False])

此Debug发出Null。

在我的DNA课程中:

List<DNA> generation;

// Use this for initialization
void Start () {
    generation = new List<DNA> ();
    generation.Add (new DNA ());
    generation [0].init ();
    Debug.Log (generation[0].Chromosone);
}

这个Debug发出它是BitArray。

编辑:如果我返回Chromosone,我会将BitArray作为回报。但是第二次我失去了联系,(下一行),Chromosone不再存在。

编辑编辑:将列表更改为DNA数组可以纠正问题,但我需要长度可以修改。所以这没有那么多帮助......

1 个答案:

答案 0 :(得分:0)

我使用bool []而不是BitArray在Unity中重新创建了这些脚本,因为这更加习惯。您将使用的代码是:
MainClass:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class MainClass : MonoBehaviour {

    private List<DNA> generation = new List<DNA>();
    // Use this for initialization
    void Start () {
        generation.Add(new DNA());
        generation[0].init();
        for(int i = 0; i < generation[0].boolLength; i++)
        {
            Debug.Log(generation[0].chromosone[i]);
        }
    }

    // Update is called once per frame
    void Update () {

    }
}

DNA分类:

using UnityEngine;
using System.Collections;

public class DNA : MonoBehaviour {

    public bool[] chromosone;
    public int boolLength = 36;
    public int lifeTime;

    public void init()
    {
        this.chromosone = new bool[boolLength];
        for(int i = 0; i < boolLength; i++)
        {
            if(Random.Range (0,2) == 1)
                this.chromosone[i] = true;
            else
                this.chromosone[i] = false;
        }
        lifeTime = Random.Range(1,3);
    }
}

当然,我假设您只在相关问题中粘贴相关代码,因此请务必在其余部分添加。但有一点需要注意,在MainClass中确保包含行using System.Collections.Generic,以便您可以访问List类型。
修改
如果你必须使用BitArray,你所要做的就是将DNA类改为:

using UnityEngine;
using System.Collections;

public class DNA : MonoBehaviour {

    public BitArray chromosone;
    public int boolLength = 36;
    public int lifeTime;

    public void init()
    {
        this.chromosone = new BitArray(boolLength);
        for(int i = 0; i < boolLength; i++)
        {
            if(Random.Range (0,2) == 1)
                this.chromosone.Set(i, true);
            else
                this.chromosone.Set(i, false);
        }
        lifeTime = Random.Range(1,3);
    }
}

我猜你的问题是,你是不是正确地迭代了chromosone变量来调试它,因为它不是null,或者......你没有包含using System.Collections.Generic