前提・実現したいこと
前提:現在Unityでゲームの作成をしております。ゲームの内容はあらかじめ4方向コマンドを入力し、再生ボタンを押したらコマンドの方向へ進むキャラクターを作っております。その際にコマンドのクローンを作成し画面上に出現させるようにしています。リセットボタンを押したら出現している矢印のクローンを削除する仕様にしたいと考えております。
実現したいこと:リセットボタンを押したときに、矢印のクローンの削除。
発生している問題・エラーメッセージ
リセットボタンを押したときに矢印のクローンが、それぞれの方向の矢印キーから1つづつしか消えません。
エラーメッセージは特にありません。
該当のソースコード
C#
ソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CloneArrow : MonoBehaviour
{
public GameObject RightArrow;
public GameObject LeftArrow;
public GameObject UpArrow;
public GameObject DownArrow;
public AudioClip keysound;
AudioSource audioSource;
private Vector3 KeyTransFormPos;
private double i = -7.5;
private int j = -1;
public GameObject objR;
public GameObject objL;
public GameObject objU;
public GameObject objD;
int arrowcnt = 0;
GameObject[] objbox = new GameObject[25];
GameObject test;
// Start is called before the first frame update void Start() { audioSource = GetComponent<AudioSource>(); int gamecnt = CharMove_MainScene1.getclearcnt(); if (gamecnt == 1) { ArrowPositionX = -7.5f; ArrowPositionY = -1; } } public static float ArrowPositionX=-7.5f; public static float ArrowPositionY=-1; public static float ArrowPosx() { return ArrowPositionX; } public static float ArrowPosy() { return ArrowPositionY; } // Update is called once per frame void Update() { KeyTransFormPos = new Vector3((float)i, j, -1); } public void RightClone() { arrowcnt += 1; objR = Instantiate(RightArrow) as GameObject; objbox[arrowcnt] = objR; audioSource.PlayOneShot(keysound); i += 0.8; ArrowPositionX += 0.8f; } public void LeftClone() { arrowcnt += 1; objL = Instantiate(LeftArrow) as GameObject; objbox[arrowcnt] = objL; audioSource.PlayOneShot(keysound); i += 0.8; ArrowPositionX += 0.8f; } public void DownClone() { arrowcnt += 1; objD = Instantiate(DownArrow) as GameObject; objbox[arrowcnt] = objD; audioSource.PlayOneShot(keysound); i += 0.8; ArrowPositionX += 0.8f; } public void UpClone() { arrowcnt += 1; objU = Instantiate(UpArrow) as GameObject; objbox[arrowcnt] = objU; audioSource.PlayOneShot(keysound); i += 0.8; ArrowPositionX += 0.8f; } public void ArrowReset() { ArrowPositionX = -7.5f; ArrowPositionY = -1; arrowcnt = 1; for (arrowcnt= 1; 26 > arrowcnt; arrowcnt++) { if (objbox[arrowcnt] == objR) { test = objR; Destroy(test); } if (objbox[arrowcnt] == objL) { test = objL; Destroy(test); } if (objbox[arrowcnt] == objU) { test = objU; Destroy(test); } if (objbox[arrowcnt] == objD) { test = objD; Destroy(test); } } }
}
試したこと
矢印コマンドを出現させる際に、配列にGameobject型のobjdなどを代入し、リセットボタンを押したときに、For文で配列の中身を変数testに代入し、Destroyで削除しようとしたのですが、if (objbox[arrowcnt] == objR)
{
test = objR;
Destroy(test);
}
この部分が一度しか実行されていませんでした。for文自体は指定回数繰り返されたことが確認できました。
補足情報(FW/ツールのバージョンなど)
Unity 2019 4.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。