我正在使用 unity3d 在 c# 中创建游戏。这有点像“交通狂热”。我需要将汽车排入队列并在它们过马路时将它们排入队列。当我将其排入队列时,它工作正常.. 但是当我将其排入队列时,我有这个例外:
“InvalidOperationException:由于对象的当前状态,操作无效”
这是我的队列代码:
public Queue UD_queue;
public int score;
void Awake(){
InitQueues();
score = 0;
}
public void InitQueues(){
DU_queue = new Queue();
Debug.Log("queue initialized");
}
private Queue syncQ(Queue q){
Queue sync_q = Queue.Synchronized(q);
return sync_q;
}
public void DoEnqueue(GameObject go){
lock(DU_queue)
DU_queue.Enqueue(go);
}
public void DoDequeue(){
lock(DU_queue)
DU_queue.Dequeue();
score +=500;
}
在其他类中,我调用方法 DoEnqueue() 和 DoDequeue()
谁能告诉我为什么 lock(){} 不起作用?