我试图获取脚本附加到的GameObject的引用。每篇文档都使用transform.parent.gameObject
,但transform.parent
和null
中Awake()
为Start()
。为了让这个工作,我需要做什么?这可能是一个完全没有问题的问题,但到目前为止谷歌还没有提出一个有效的答案。
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour
{
private void Awake()
{
var obj = transform.parent;
Debug.Log(obj);
}
private void Start()
{
var obj = transform.parent;
Debug.Log(obj);
}
}
答案 0 :(得分:1)
没关系!我是个白痴!它不应该是父母,而是:
var obj = transform or var obj = transform.gameObject
因为这个脚本是它应该引用的游戏对象的一部分,而不是任何父类。我有一个奇怪的假设,即脚本是游戏对象的孩子。
答案 1 :(得分:0)
Transform.parent告诉您当前转换的父级是什么。 I.E.如果 GameObjectA 是 GameObjectB 的子项,则访问 GameObjectB 中的transform.gameObject的脚本将返回 GameObjectA
实际上,您所寻找的只是 gameObject 。这会隐式返回脚本附加到的游戏对象。
在场景中创建两个GameObjects 调用一个 GameObjectA ,另一个 GameObjectB 将此脚本附加到 GameObjectB ,然后将 GameObjectB 拖到层次结构 GameObjectA 下
public class ExampleBehaviour : MonoBehaviour {
void Awake () {
Debug.Log(gameObject.name); //Prints "GameObjectB" to the console
Debug.Log(transform.parent.name); //Prints "GameObjectA" to the console
}
}