自己的类和列表<>问题 Unity C#



我需要你的帮助来处理那些会让我大吃一惊的事情。。。(不知道为什么,但我不能在帖子的开头写"大家好!"。论坛隐藏了它:(

我不明白为什么我的列表<'My Tile Class>将自行清除。

我有几个预制件(带盒子碰撞器(,没有附加脚本,只有一个脚本在现场。这个想法是采取随机预制,附加随机值并启动它。然后玩家点击场景中的预制并获得其值。

public class Generate_Field : MonoBehaviour {
public class Tiles {
public GameObject My_Tile;
public int My_Value;
}
public List<Tiles> My_List;
private GameObject EmptyObj;
// ... other variables
void Start (){
List<Tiles> My_List = new List<Tiles> ();
// ... below some calculation (about 100 rows)
//Instantiate obj and give its reference to Emptyobj
EmptyObj = Instantiate (My_GameObj_To_Inst, new Vector3(My_X, My_Y, 0f), Quaternion.identity);
Tiles Tile1 = new Tiles ();
Tile1.My_Tile = EmptyObj;
Tile1.My_Value = 1; //
My_List.Add (Tile1); // Add Tile1 (with reference to Gameobj and value to List) 

// If I put code inside Void Start () it works ok and print all values
foreach (Tiles SS in My_List) {
print (SS.My_Value);
}

问题是当我把它放到无效更新((时。

My_List以某种方式"自杀"归零。尽管它是公共列表。在这种情况下,我会出错:"NullReferenceException:对象引用未设置为对象的实例…">

void Update ()
{
if (Input.GetKeyDown (KeyCode.Mouse1)) {
print (My_List.Count);
}
}

Start中声明一个新的本地列表并填充该列表。如果您想初始化类成员,请从进行初始化的行中删除类型。

void Start (){
My_List = new List<Tiles> (); // class member, not new variable.

通常,最好在声明点初始化列表。通常没有理由在以后替换该列表。

最新更新