2016-05-31 4 views
-2

Ich habe ein Spiel in der Einheit gemacht, die mehrere Szenen auf verschiedenen Ebenen haben, in denen Benutzer einen farbigen Block wählen müssen, um die nächste Ebene zu gehen, aber ich möchte, dass mein Code in einer einzigen Szene ist, kann ich meine Multi konvertieren Szenenspiel in einer einzigen Szene. -Code für die Basisebene 1 Raster istWie kann ich ein Spiel mit mehreren Szenen in ein einzelnes Szenenspiel konvertieren?

public IEnumerator Start() { 
     grid = new GameObject[ySize, xSize]; 
     float x = xStart; 
     float y = yStart; 
     ScreenRandom = Random.Range(0, 3); 
     if (ScreenRandom == 0) 
     { 
      img.color = UnityEngine.Color.red; 
      text.text = "Select all the Red Objects"; 
      yield return new WaitForSeconds(time); 
      Destroy(img); 
      Destroy(text); 
      int check = 1; 
       for (int i = 0; i < ySize; i++) 
       { 
        for (int j = 0; j < xSize; j++) 
        { 

         if (check <= 1) 
         { 
          GameObject rblock = Instantiate(RedPrefabs[Random.Range(0, 1)]) as GameObject; 
          rblock.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         rblock.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         rblock.transform.SetParent(canvas.transform); 
          grid[i, j] = rblock; 
          CountRed++; 
         } 
         else { 
          GameObject block = Instantiate(NonRedPrefab[Random.Range(0, 2)]) as GameObject; 
          block.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         block.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         block.transform.SetParent(canvas.transform); 
          grid[i, j] = block; 
         } 
         check++; 
         x += xWidth * space; 
        } 
        y -= yHeight * space; 
        x = xStart; 
       } 

     } 
     if (ScreenRandom == 1) 
     { 
      img.color = UnityEngine.Color.blue; 
      text.text = "Select all the Blue Objects"; 
      yield return new WaitForSeconds(time); 
      Destroy(img); 
      Destroy(text); 
      int check = 1; 
      for (int i = 0; i < ySize; i++) 
      { 
       for (int j = 0; j < xSize; j++) 
       { 

        if (check <= 1) 
        { 
         GameObject rblock = Instantiate(BluePrefabs[Random.Range(0, 1)]) as GameObject; 
         rblock.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         rblock.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         rblock.transform.SetParent(canvas.transform); 
         grid[i, j] = rblock; 
         CountBlue++; 
        } 
        else { 
         GameObject block = Instantiate(NonBluePrefab[Random.Range(0, 2)]) as GameObject; 
         block.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         block.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         block.transform.SetParent(canvas.transform); 
         grid[i, j] = block; 
        } 
        check++; 
        x += xWidth * space; 
       } 
       y -= yHeight * space; 
       x = xStart; 
      } 
     } 
     if (ScreenRandom == 2) 
     { 
      img.color = UnityEngine.Color.yellow; 
      text.text = "Select all the Yellow Objects"; 
      yield return new WaitForSeconds(time); 
      Destroy(img); 
      Destroy(text); 
      int check = 1; 
      for (int i = 0; i < ySize; i++) 
      { 
       for (int j = 0; j < xSize; j++) 
       { 

        if (check <= 1) 
        { 
         GameObject rblock = Instantiate(YellowPrefabs[Random.Range(0, 1)]) as GameObject; 
         rblock.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         rblock.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         rblock.transform.SetParent(canvas.transform); 
         grid[i, j] = rblock; 
         CountYellow++; 
        } 
        else { 
         GameObject block = Instantiate(NonYellowPrefab[Random.Range(0, 2)]) as GameObject; 
         block.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         block.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         block.transform.SetParent(canvas.transform); 
         grid[i, j] = block; 
        } 
        check++; 
        x += xWidth * space; 
       } 
       y -= yHeight * space; 
       x = xStart; 
      } 
     } 
    } 

Code zu überprüfen und die Laststufe 2 ist:

void Update() { 
     screen = GridControl.ScreenRandom; 
     if (Input.GetMouseButtonDown(0)) 
     { 
      Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
      RaycastHit hit; 
      if (screen == 0) 
      { 
       if (Physics.Raycast(ray, out hit)) 
       { 
        if (hit.collider.tag == "BlueBlock") 
        { 
         Destroy(hit.transform.gameObject); 
         print("GameOver"); 
         Application.LoadLevel(0); 
        } 
        if (hit.collider.tag == "RedBlock") 
        { 
         RedCount++; 
         Destroy(hit.transform.gameObject); 
         Correct++; 
         Score.text = " " + Correct; 
         if (RedCount == GridControl.CountRed) 
         { 
          print("Next Level"); 
          Application.LoadLevel(3); 
         } 
        } 
        if (hit.collider.tag == "YellowBlock") 
        { 
         Destroy(hit.transform.gameObject); 
         print("GameOver"); 
         Application.LoadLevel(0); 
        } 
       } 
      } 
      if (screen == 1) 
      { 
       if (Physics.Raycast(ray, out hit)) 
       { 
        if (hit.collider.tag == "BlueBlock") 
        { 
         BlueCount++; 
         Destroy(hit.transform.gameObject); 
         Correct++; 
         Score.text = " " + Correct; 
         if (BlueCount == GridControl.CountBlue) 
         { 
          print("Next Level"); 
          Application.LoadLevel(3); 
         } 
        } 
        if (hit.collider.tag == "RedBlock") 
        { 
         Destroy(hit.transform.gameObject); 
         print("GameOver"); 
         Application.LoadLevel(0); 
        } 
        if (hit.collider.tag == "YellowBlock") 
        { 
         Destroy(hit.transform.gameObject); 
         print("GameOver"); 
         Application.LoadLevel(0); 
        } 
       } 
      } 
      if (screen == 2) 
      { 
       if (Physics.Raycast(ray, out hit)) 
       { 
        if (hit.collider.tag == "BlueBlock") 
        { 
         Destroy(hit.transform.gameObject); 
         print("GameOver"); 
         Application.LoadLevel(0); 
        } 
        if (hit.collider.tag == "RedBlock") 
        { 
         Destroy(hit.transform.gameObject); 
         print("Game Over"); 
         Application.LoadLevel(0); 
        } 
        if (hit.collider.tag == "YellowBlock") 
        { 
         YellowCount++; 
         Destroy(hit.transform.gameObject); 
         Correct++; 
         Score.text = " " + Correct; 
         if (YellowCount == GridControl.CountYellow) 
         { 
          print("Next Level"); 
          Application.LoadLevel(3); 
         } 
        } 
       } 

-Code für die Stufe 2 GridBase ist;

public void Start() 
    { 
     grid = new GameObject[ySize, xSize]; 
     ScreenRandom = GridControl.ScreenRandom; 
     float x = xStart; 
     float y = yStart; 
     if (ScreenRandom == 0) 
     { 
      int check = 1; 
      for (int i = 0; i < ySize; i++) 
      { 
       for (int j = 0; j < xSize; j++) 
       { 

        if (check <= 2) 
        { 
         GameObject rblock = Instantiate(RedPrefabs[Random.Range(0, 1)]) as GameObject; 
         rblock.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         rblock.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         rblock.transform.SetParent(canvas.transform); 
         grid[i, j] = rblock; 
         CountRed++; 
        } 
        else { 
         GameObject block = Instantiate(NonRedPrefab[Random.Range(0, 2)]) as GameObject; 
         block.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         block.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         block.transform.SetParent(canvas.transform); 
         grid[i, j] = block; 
        } 
        check++; 
        x += xWidth * space; 
       } 
       y -= yHeight * space; 
       x = xStart; 
      } 

     } 
     if (ScreenRandom == 1) 
     { 
      int check = 1; 
      for (int i = 0; i < ySize; i++) 
      { 
       for (int j = 0; j < xSize; j++) 
       { 

        if (check <= 2) 
        { 
         GameObject rblock = Instantiate(BluePrefabs[Random.Range(0, 1)]) as GameObject; 
         rblock.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         rblock.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         rblock.transform.SetParent(canvas.transform); 
         grid[i, j] = rblock; 
         CountBlue++; 
        } 
        else { 
         GameObject block = Instantiate(NonBluePrefab[Random.Range(0, 2)]) as GameObject; 
         block.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         block.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         block.transform.SetParent(canvas.transform); 
         grid[i, j] = block; 
        } 
        check++; 
        x += xWidth * space; 
       } 
       y -= yHeight * space; 
       x = xStart; 
      } 
     } 
     if (ScreenRandom == 2) 
     { 

      int check = 1; 
      for (int i = 0; i < ySize; i++) 
      { 
       for (int j = 0; j < xSize; j++) 
       { 

        if (check <= 2) 
        { 
         GameObject rblock = Instantiate(YellowPrefabs[Random.Range(0, 1)]) as GameObject; 
         rblock.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         rblock.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         rblock.transform.SetParent(canvas.transform); 
         grid[i, j] = rblock; 
         CountYellow++; 
        } 
        else { 
         GameObject block = Instantiate(NonYellowPrefab[Random.Range(0, 2)]) as GameObject; 
         block.GetComponent<RectTransform>().anchoredPosition = new Vector2(x, y); 
         block.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f) * scale; 
         block.transform.SetParent(canvas.transform); 
         grid[i, j] = block; 
        } 
        check++; 
        x += xWidth * space; 
       } 
       y -= yHeight * space; 
       x = xStart; 
      } 
     } 
    } 

Antwort

0

Zum Start weiß ich nicht, warum würden Sie das tun. Technisch ist das der Sinn von Szenen. Aber was immer du tun kannst, ist alles in eine Szene zu bringen (Level 1 und 2) und dann zu positionieren und zu deaktivieren, was zu Level 2 außerhalb der Kamera gehört. Dann würde ich anstelle von Application.LoadLevel eine Funktion aufrufen, die alles, was zu Level 1 gehört, aus dem Bildschirm verschiebt und gleichzeitig Level 2 auf den Bildschirm verschiebt. Wenn ich an deiner Stelle wäre, würde ich alle Objekte einer Ebene als Kind eines anderen GameObjects (vielleicht LevelX genannt) gruppieren, so dass es einfacher ist, alles auf einmal zu verschieben. Dies wird dir sogar einen schönen Übergang zwischen den Levels geben. Wenn Sie den Übergang nicht möchten, ändern Sie einfach die Positionen sofort.

Seien Sie vorsichtig, denn abhängig von der Anzahl der Ebenen können schwerwiegende Leistungsprobleme auftreten.

+0

Das Spiel beinhaltet ein einfaches Gitter von Objekten unterschiedlicher Farbe. Das Spiel Sterne mit einer Farbe präsentieren dann Objekte in verschiedenen Farben auf dem Bildschirm erscheinen und Spieler müssen korrekte Farbblöcke für diese Runde Tab. Das Spiel wird mit verschiedenen Level-Szenen komplex, aber ich möchte das ganze Spiel in einem einzigen Spielbildschirm. –

+0

Dann würde ich tun, sobald der Spieler alle Blöcke der richtigen Farbe berührt, dann werde ich alle Blöcke des Rasters löschen und dann den ursprünglichen Farbblock wieder spawnen und den Prozess wiederholen. – Agustin0987

Verwandte Themen