X



unityでゲーム作りたい(Help!)

0001師走
垢版 |
2018/03/16(金) 03:11:03.39ID:plFaZdHA
unityでゲーム作りたい
お願いします 
0344くまじょ
垢版 |
2020/05/14(木) 05:33:19.73ID:6hw1sJEU
ScriptPai pai = Instantiate(prefabPai).GetComponent<ScriptPai>();
Destroy(pai.gameObject);
として実際見た目も消えているのに
GameObject.FindGameObjectsWithTag("Pai");
で消したはずのも検出してしまう

Destroy(pai.gameObject);を実行前にタグ名を変えておくことでごまかすけど
0345くまじょ
垢版 |
2020/05/14(木) 05:39:48.42ID:6hw1sJEU
>>344
[ExecuteAlways]が悪さしてるのかなあ
変更が多くてなくせないから検証してない
0346弟子
垢版 |
2020/05/14(木) 06:49:17.17ID:1K896jy3
>>344
それ実行したらヒエラルキーにゲームオブジェクト出来てるとおもうけどどうでしょ

まずスクリプト型オブジェクトの取得にinstantiate の帰り値指定してるけど、そもそもinstantiate はゲームオブジェクトを生成する命令
そのためスクリプトオブジェクトを破棄してもinstantiate で生成されたオブジェクトは破棄してないから残ってると推測
複雑にしないで順序だててやればいいかと
0347くまじょ
垢版 |
2020/05/14(木) 08:33:04.63ID:LxPnkdhJ
>>346
それが消えてるのに数が合わない
0348くまじょ
垢版 |
2020/05/14(木) 08:37:03.99ID:LxPnkdhJ
時間があるときにでも確認してみる
複数シーンを使用している
0349くまじょ
垢版 |
2020/05/14(木) 20:17:51.51ID:6hw1sJEU
GameObject[] goPais;

goPais = GameObject.FindGameObjectsWithTag("Pai");
if(goPais.Length != 0)
{
Debug.Log("★-1- おかしな現象が起きてるぞ goPais.Length=" + goPais.Length);
}

ScriptPai pai = MakePai(0, 0, 0);

goPais = GameObject.FindGameObjectsWithTag("Pai");
if (goPais.Length != 1)
{
Debug.Log("★-2- おかしな現象が起きてるぞ goPais.Length=" + goPais.Length);
}

//pai.tag = "Player"; // このあとDestroyしてるのにGameObject.FindGameObjectsWithTag("Pai");で見つけてしまう

Destroy(pai.gameObject);

goPais = GameObject.FindGameObjectsWithTag("Pai");
if (goPais.Length != 0)
{
Debug.Log("★-3- おかしな現象が起きてるぞ goPais.Length="+ goPais.Length);
}
0350くまじょ
垢版 |
2020/05/14(木) 20:21:02.68ID:6hw1sJEU
>>349
★-3- おかしな現象が起きてるぞ
が表示された

つまり
Destroyしたのに
GameObject.FindGameObjectsWithTagが見つけてしまう

このあと、
goPais = GameObject.FindGameObjectsWithTag("Pai");
goPais[0]になにかすると
すでにdestroyされているのでエラーになる
レスを投稿する


ニューススポーツなんでも実況