RootCube
└ MyCube
└ ChildCube
前提:MyCubeにスクリプトをアタッチしている状態
インスペクタからアタッチする
public GameObject TargetCube;
SerializeField
https://docs.unity3d.com/jp/540/ScriptReference/SerializeField.html
[SerializeField] GameObject TargetCube;
シーンの中からざっくり探す
GameObject.Find
https://docs.unity3d.com/jp/540/ScriptReference/GameObject.Find.html
GameObject TargetCube;
void Start () {
TargetCube = GameObject.Find("MyCube"); // ユニークな名前
}
シーンの中からタグで探す
GameObject.FindWithTag
https://docs.unity3d.com/jp/540/ScriptReference/GameObject.FindWithTag.html
GameObject TargetCube;
void Start () {
TargetCube = GameObject.FindWithTag("cube");
}
シーンの中からタグで探す(複数)
GameObject.FindGameObjectsWithTag
https://docs.unity3d.com/ja/540/ScriptReference/GameObject.FindGameObjectsWithTag.html
GameObject[] respawns;
void Start () {
respawns = GameObject.FindGameObjectsWithTag("Respawn");
}
子要素を探す
Transform.Find
https://docs.unity3d.com/jp/540/ScriptReference/Transform.Find.html
GameObject TargetCube;
void Start () {
// Transform情報を返すので、ChildCubeが必要ならgameObjectをつける
TargetCube = transform.Find("ChildCube").gameObject;
}
Transform
https://docs.unity3d.com/jp/540/ScriptReference/Transform.html
非アクティブな要素を取得することもできるので重要
UnityでアクティブでないGameObjectを取得する
子要素から親要素を探す
変数 | 意味 |
---|---|
parent | Transform の親 |
root | 階層の一番上の Transform |
parent
GameObject TargetCube;
void Start () {
TargetCube = GameObject.Find("ChildCube");
}
void Update () {
TargetCube.transform.parent.Rotate(0, Time.deltaTime * 50, 0);
}
root(中央)は動かず、MyCubeを(一番下)中心に回転する
root
GameObject TargetCube;
void Start () {
TargetCube = GameObject.Find("ChildCube");
}
void Update () {
TargetCube.transform.root.Rotate(0, Time.deltaTime * 50, 0);
}
rootごと回しているので、全てのオブジェクトが回転する