2014-07-05 1 views
2

for-loop이 질문의 맨 아래에서 볼 수 있습니다. for-loop 안에 여러 if 문이 있습니다. if 문이 호출되고 나머지 for 루프에 대해 if 문이 비활성화됩니다. 어쨌든 그 일을하고 있습니까?for-loop에서 하나의 코드를 유니티 스크립트로 멈추십시오

for (var i = 0; i < chunksInScene.length ; i++) { 
if(chunksInScene[i].name.Substring(0,5) == "Chunk" || chunksInScene[i].name.Substring(0,5) == "_TERR" || chunksInScene[i].name.Substring(0,5) == "ACTIV") { 
    if(chunksInScene[i].tag != "Player") { 
      if(chunksInScene[i].Equals(chunk1)){load1 = false;continue;} 
      if(chunksInScene[i].Equals(chunk2)){load2 = false;continue;} 
      if(chunksInScene[i].Equals(chunk3)){load3 = false;continue;} 
      if(chunksInScene[i].Equals(chunk4)){load4 = false;continue;} 
      if(chunksInScene[i].Equals(chunk5)){load5 = false;continue;} 
      if(chunksInScene[i].Equals(chunk6)){load6 = false;continue;} 
      if(chunksInScene[i].Equals(chunk7)){load7 = false;continue;} 
      if(chunksInScene[i].Equals(chunk8)){load8 = false;continue;} 
      if(chunksInScene[i].Equals(chunk9)){load9 = false;continue;} 
      if(chunksInScene[i].Equals(chunk10)){load10 = false;continue;} 
      if(chunksInScene[i].Equals(chunk11)){load11 = false;continue;} 
      if(chunksInScene[i].Equals(chunk12)){load12 = false;continue;} 
      if(chunksInScene[i].Equals(chunk13)){load13 = false;continue;} 
      if(chunksInScene[i].Equals(chunk14)){load14 = false;continue;} 
      if(chunksInScene[i].Equals(chunk15)){load15 = false;continue;} 
      if(chunksInScene[i].Equals(chunk16)){load16 = false;continue;} 
      if(chunksInScene[i].Equals(chunk17)){load17 = false;continue;} 
      if(chunksInScene[i].Equals(chunk18)){load18 = false;continue;} 
      if(chunksInScene[i].Equals(chunk19)){load19 = false;continue;} 
      if(chunksInScene[i].Equals(chunk20)){load20 = false;continue;} 
      if(chunksInScene[i].Equals(chunk21)){load21 = false;continue;} 
      if(chunksInScene[i].Equals(chunk22)){load22 = false;continue;} 
      if(chunksInScene[i].Equals(chunk23)){load23 = false;continue;} 
      if(chunksInScene[i].Equals(chunk24)){load24 = false;continue;} 
      if(chunksInScene[i].Equals(chunk25)){load25 = false;continue;} 
    } 
} 

}

답변

2

(마지막 if의 exept)는 루프를 중지하지만, 루프의 알림에 대한 실행 if 문을 무시하고 싶지 않기 때문에. 그런 다음 모든 if 문에 대한 조건을 만들어야합니다.

boolean 유형의 배열을 생성하고 ifs 중 하나의 내부에 한 번 거짓으로 설정할 수 있습니다. 이와 같이 :

var myArray : boolean[] = new boolean[NUMBER_OF_IFs]; 

if(myArray[0] && chunksInScene[i].Equals(chunk1) 
{ 
    load1 = false; 
    myArray[0] = false; 
    continue; 
} 

배열의 각 요소에는 if 문을 나타내는 요소가 있어야합니다.


은 코드에서 어떻게 보이는지입니다 : 다른 답변하는 대신

var myArray : boolean[] = new boolean[25]; 

for (var i = 0; i < chunksInScene.length ; i++) 
{ 
    // I changed this part, the long if statement was driving me crazy. 
    var temp = chuckInScene[i].name.Substring(0,5); 

    if((temp == "Chunk" || temp == "_TERR" || temp == "ACTIV") && chunksInScene[i].tag != "Player") 
    { 
     if(myArray[0] && chunksInScene[i].Equals(chunk1)) 
     {load1 = false; myArray[0] = false;continue;} 

     if(myArray[1] && chunksInScene[i].Equals(chunk2)) 
     {load2 = false; myArray[1] = false; continue;} 

     if(myArray[2] && chunksInScene[i].Equals(chunk3)) 
     {load3 = false; myArray[2] = false; continue;} 

     . 
     . 
     . 
     // You write the rest. 
     if(myArray[25] && chunksInScene[i].Equals(chunk25)) 
     {load25 = false; myArray[25]; continue;} 
    } 
} 
+0

나는 그것을 잘 이해하지 못한다. 나는 미안한 프로그래밍을 시작했다. 나를 위해 for 루프를 작성할 수 있는가? 그것이 어떻게 필요한지 더 잘 보아라. 고맙습니다. – Jordi

+0

@ Jordi이 질문에 대한 답변이 먼저 나옵니다. 이러한 if 문 중 하나가 실행되면 루프를 중지 하시겠습니까? 또는 루프를 계속 실행 하시겠습니까? – FunctionR

+0

예를 들어 첫 번째 if 문이 호출 될 때 for 루프가 완전히 완료 될 때까지 결코 다시 호출되지 않기를 원합니다. – Jordi

1

if 문 다음에 else과 공백을 추가합니다.

if(chunksInScene[i].Equals(chunk1){load1 = false;continue;}else 
if(chunksInScene[i].Equals(chunk2){load2 = false;continue;}else 
... 
+0

그것은 나에게 오류를 준다, 나는 마지막 else 뒤에 중괄호를 추가해야한다. – Jordi

0

, 당신은 위임을 사용할 수 있습니다. 각각의 if 문을 델리게이트로 만들고, 그것들을 모두 Set에 넣은 다음, 메인 루프를 전체 집합으로 가져 가면됩니다. if가 트리거되면 세트에서 제거하고 계속하십시오.

관련 문제