私は複数の四角からゲームボードを作成し、オンまたはオフに切り替えることができるグリッドを持つシンプルなプロジェクトを持っています。Unityはインスタンス化されたオブジェクトのトグルを表示または消滅させます
残念ながら、それはそのようには機能しません。私のボードマネージャーのコードは以下の通りです:
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() {
}
}
}
私のゲームプログラミングの経験は、Pygameのものです。 Pygameでは、バックグラウンドが常に再生されなければならないので、グリッドを消したい場合は、フレームごとに1回ブリッティングをやりなおすだけで、フレームは消えてしまいます。 1つのオブジェクトでは、コード内の背景を再生成することなくオブジェクトを移動できるため、グリッドは1つのインスタンス化の後にとどまります。 GridToggle.isOnがtrueの場合、グリッドはインスタンス化され、GridToggle.isOnがfalseになるまでそこにとどまる方法を知りたいだけです。GridToggle.isOnはfalseになります。グリッドが再びオンになるまでグリッドが存在しなくなります。ありがとうございました!
私はこれを試してみましょう。ありがとうございました! – Demandooda
Cool。しかし、私はレンダラーを別のスクリプトからリモートで無効にするにはどうしたらよいでしょうか。グリッドは別のスクリプトから管理され、プレハブです。 – Demandooda
Toggleではなく、別のスクリプトで制御したいのですか?もしあなたがBoardHandleを持つGameObjectへの参照を持っているならば、他のスクリプトからそれを単純に無効にすることができます。 – Lof