为什么 transform.parent 在 Awake() 和 Start() 中为空?
Why is transform.parent null in Awake() and Start()?
我正在尝试获取对脚本所附加的 GameObject 的引用。根据文档 transform.parent.gameObject
用于此,但 transform.parent
在 Awake()
和 Start()
中都是 null
。我需要做什么才能使它正常工作?这可能是一个完全菜鸟的问题,但 Google 到目前为止还没有给出有效的答案。
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);
}
}
没关系!我是个白痴!它不应该是父对象但是:
var obj = transform or var obj = transform.gameObject
因为这个脚本是它应该引用的游戏对象的一部分,而不是任何父对象。我有一个奇怪的假设,即脚本是游戏对象的子对象。
Transform.parent 告诉您当前变换的父项是什么。 IE。如果 GameObjectA 是 GameObjectB 的子对象,则访问 GameObjectB 中的 transform.gameObject 的脚本将return GameObjectA
你要找的,其实就是gameObject。这隐含地 return 是您的脚本附加到的游戏对象。
在场景中创建两个游戏对象。
调用一个 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
}
}
我正在尝试获取对脚本所附加的 GameObject 的引用。根据文档 transform.parent.gameObject
用于此,但 transform.parent
在 Awake()
和 Start()
中都是 null
。我需要做什么才能使它正常工作?这可能是一个完全菜鸟的问题,但 Google 到目前为止还没有给出有效的答案。
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);
}
}
没关系!我是个白痴!它不应该是父对象但是:
var obj = transform or var obj = transform.gameObject
因为这个脚本是它应该引用的游戏对象的一部分,而不是任何父对象。我有一个奇怪的假设,即脚本是游戏对象的子对象。
Transform.parent 告诉您当前变换的父项是什么。 IE。如果 GameObjectA 是 GameObjectB 的子对象,则访问 GameObjectB 中的 transform.gameObject 的脚本将return GameObjectA
你要找的,其实就是gameObject。这隐含地 return 是您的脚本附加到的游戏对象。
在场景中创建两个游戏对象。
调用一个 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
}
}