このブログについて

このブログについて

■ 公開中のゲーム ・ 16連打で18億年!? TapTapCats! 9,223,372,036,854,775,807回 タップして、別宇宙からの刺客を倒そう! あなたのタップの力が試される! 毎秒 16連打 を続けても、 約18.27億年 かかるので長生きしながら遊んでね! 記事 →  16連打で18億年!? TapTapCats! 購入 →  https://yamatogamelabs.booth.pm/items/5978628 ・ 攻略!ダークチョコモカチップフラペチーノ城! 一本道のローグライク ! モンスターを倒し、レベルアップしてアクションを獲得し、うまく使って下へと進んでいこう! HPや空腹の管理が勝利の鍵! たくさんのモンスターや謎のフロアを攻略し、ボスを倒そう! 記事 →  攻略!ダークチョコモカチップフラペチーノ城! 購入 →  https://yamatogamelabs.booth.pm/items/5698476 ・  Cuel UP! 無料で遊べるようになりました! ギリギリを攻めてジャンプ! 様々なオブジェクトを飛び乗り、かわし、上へ上へと進んでいこう! 記事 →  Cuel UP! 無料で遊べるようになりました! 購入 →  https://yamatogamelabs.booth.pm/items/5515664 ■ その他、規約など ・  ゲームのプレイ、ゲーム実況、二次創作などの規約 ・  プライバシーポリシー

Unityで子オブジェクトをすべて取得したり、1つだったり

どうもどうも、
初心者ゲーム制作者の大和です

自分がゲーム制作の過程で
解決できたことを書いていきます


今回は悩みの種だったオブジェクトの取得について
とくに、子オブジェクトの取得です


Unityで子オブジェクトをすべて取得したり、1つだったり


自分の認識では、「foreach」ですべてを!
transform.GetChild(子の番号)で一つを!
な、感じです

実際に使っているのは↓
状況に応じでいいとこどりすればいけるだろっ!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChildGet : MonoBehaviour
{
 // ステージを取得する
 [SerializeField] private List<GameObject> stageList = new List<GameObject>();
 void Start()
 {
  // 親オブジェクト
  Transform parentTransform = GameObject.Find("Stage").transform;

  // 0番目の子を取得 --- 直接
  print(parentTransform.GetChild(0).name);

  print("---------------------------------------------------");

  // 子をすべて取得 --- すべてをリストに入れる
  foreach (Transform child in parentTransform)
        {
   stageList.Add(child.gameObject);
         print(child.name);
        }

  print("---------------------------------------------------");

  // 現在のステージの番号
  int nowStageNum = 1;
  // リストの中身 --- ついでに一つのステージを表示してみた
  for (int i = 0; i < stageList.Count; i++)
  {
   // 表示するステージ --- 数字は0から、ステージは1から始まるので注意が必要
   if (i == nowStageNum) stageList[i].SetActive(true);

   print(stageList[i].name);
  }
 }
}


foreachって、
非表示のオブジェクトも取得できるから便利!

…と、勝手に思っていたら、
transform.GetChild(子の番号)」 でも普通に取得できました
 

 「GameObject.Find」だと、
非表示のオブジェクトを取得できないだけで、
上二つは非表示でもOK!


foreachが便利なのは、
まとめてリストに放り込めることですね

一つ一つマウスで放り込むのは面倒なので
(ソースの // 子をすべて取得 --- すべてをリストに入れるの部分)


↑ 何度もマウスをドラッグ&ドロップ…

ステージ数が多くなると面倒で面倒で(;^_^A
ループで解決できてよかったー

このブログの人気の投稿

「Unity」地面との当たり判定は、「ContactFilter2D」でいいんじゃない?

Unityでクリックした位置に移動するプログラム