C# 我的类中似乎有两个同名的不同变量

C# 我的类中似乎有两个同名的不同变量,c#,unity3d,C#,Unity3d,我在类管理器中声明了一个私有int-tree\u计数。 void Start()和void Update()按预期使用变量,但另一种方法public void Tree_destromed似乎使用了不同的树计数 这是我的密码 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类管理器:MonoBehavior { 私有整数树计数; //在第一帧更新之前调用Start void Start() { 树木数量=500; } //每帧调用一次

我在类管理器中声明了一个私有int-tree\u计数。 void Start()和void Update()按预期使用变量,但另一种方法public void Tree_destromed似乎使用了不同的树计数

这是我的密码

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类管理器:MonoBehavior
{
私有整数树计数;
//在第一帧更新之前调用Start
void Start()
{
树木数量=500;
}
//每帧调用一次更新
无效更新()
{
如果(时间<3.05)
{
打印(树计数);
}
}
公共空树_已销毁()
{
树_计数--;
打印(树计数);
}
}
void Update()为树计数打印500,但public void tree_destromed()打印0,并转到-1,-2,。。。对于每个方法调用

public void Tree_destromed()由具有以下脚本的对象调用:

使用System.Collections.Generic;
使用UnityEngine;
公共类树行为:单行为
{
公共游戏对象管理器;
//在第一帧更新之前调用Start
void Start()
{
摧毁(游戏对象,3);
}
//每帧调用一次更新
无效更新()
{
}
私有void OnDestroy()
{
spawnManager.GetComponent().Tree_已销毁();
}
}
你知道为什么会这样吗?任何帮助都将不胜感激

编辑1:按照发生的顺序:首先,初始化私有int tree_count,调用void Start(),将tree_count设置为500,每帧调用void Update(),显示tree_count为500,3秒后调用void tree_destromed,显示不同的tree_count,在下一帧中调用void Update(),显示树的数量仍然是500


编辑2:场景中只有3个对象:摄影机(未附加脚本)、具有SpawnManager的对象,以及另一个在销毁时调用Tree_Distromed的对象。我确信没有重复的对象或脚本。

因为这是一个类对象,所以可能有两个具有相同私有变量的对象实例。没有看到项目的其余部分,这是最有可能的答案。

您有两个不同的
SpawnManager
实例,第二个是您从未调用
Start
方法。这是我的猜测。你能展示一下你实际调用“Tree_destromed()”的代码吗?所有的事情都发生在同一个线程中吗?我不确定你说的同一个线程是什么意思。如果您指的是我的计算机处理器如何处理这些脚本,我不知道。在这种情况下,这应该无关紧要,因为void ondestory()是调用Tree_destroy()的函数,它只在3秒钟后发生。我的输出基本上变成了500500500,…,500500,0,-1,-2,…,-5,-6,-75005050500(接近0的输出数量基于我实例化的树的数量,在本例中是8)。该项目是非常新的,场景中只有3个对象(摄影机、带SpawnManager的对象和销毁时调用Tree_destroyed()的对象),所以我确信没有重复的。