So habe ich ein einfaches Projekt, wo ich ein Spielbrett aus mehreren Quadraten zu machen, und es hat ein Gitter, das ein- oder ausgeschaltet werden kann.Unity make instanziiert Objekt toggle erscheinen oder verschwinden
Leider funktioniert es nicht so. Hier ist mein Board Manager Code:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
namespace BoardHandle {
[RequireComponent(typeof(SpriteRenderer))]
public class BoardManager : MonoBehaviour {
//2d list that represents the board
List<List<GameObject>> board = new List<List<GameObject>>();
//Gamebjects import
public GameObject GrassTile;
public GameObject Grid;
//UI buttons import
public Toggle GridToggle;
//Miscellanious variables that could be edited in inspector
public int rows;
public int cols;
public float tileWidth;
public float tileHeight;
void Start() {
GrassTile.transform.localScale = new Vector3 (tileWidth, tileHeight, 0f);
Grid.transform.localScale = new Vector3 (tileWidth, tileHeight, 0f);
//Adds all of the stuff to the game board
for (int x = 0; x < cols; x++) {
board.Add (new List<GameObject>());
for (int y = 0; y < rows; y++) {
board [x].Add (GrassTile);
}
}
//Makes board bits all go to the screen
for (int x = 0; x < board.Count; x++) {
for (int y = 0; y < board[x].Count; y++) {
//Makes the grid. And it stays there currently until the game ends.
Instantiate (Grid,
new Vector3 (x * tileWidth, y * tileHeight, 0),
Quaternion.identity);
//This is the actual board, filled with grass tiles. I wnat to keep this.
Instantiate (board [x] [y],
new Vector3 (x * tileWidth, y * tileHeight, 0),
Quaternion.identity);
}
}
}
void Update() {
}
}
}
Meine Spielprogrammierung Erfahrung ist von Pygame. In Pygame muss sich der Hintergrund ständig über sich selbst regenerieren. Wenn ich also das Gitter verschwinden lassen will, muss ich es nur einmal pro Frame und einen Frame später blitzen lassen. Da Objekte in der Einheit verschoben werden können, ohne den Hintergrund im Code neu generieren zu müssen, bleibt das Raster nach nur einer Instanziierung erhalten. Ich möchte nur eine Möglichkeit kennen, dass, wenn GridToggle.isOn wahr ist, das Gitter instanziiert wird und dort bleibt, bis GridToggle.isOn falsch ist, wenn das Gitter nicht mehr da ist, bis es wieder eingeschaltet wird. Vielen Dank!
Ich werde dies versuchen. Vielen Dank! – Demandooda
Kühl. Aber ich frage mich, wie kann ich den Renderer remote von einem anderen Skript deaktivieren. Das Raster wird von einem separaten Skript verwaltet und ist ein Prefab. – Demandooda
Also statt der Toggle wollen Sie es mit einem anderen Skript steuern? Wenn Sie mit dem BoardHandle einen Verweis auf das GameObject haben, können Sie es einfach vom anderen Skript aus deaktivieren. – Lof