我正在阅读 Unity 教程并遇到以下问题:
private Rigidbody2D rigidBody;
private Renderer renders;
void Start()
{
rigidBody = GetComponent<Rigidbody2D>();
renders = GetComponent<Renderer>();
if (isLooping)
{
for(int i = 0; i < transform.childCount; i++)
{
Transform child = transform.GetChild(i);
if (child.renderer != null)
{
backgroundPart.Add(child);
}
}
}
}
在最后一个 if on 'renderer' 会弹出一个错误:Component.renderer is deprecated, use GetComponent(), did it类似于rigidbody2D,但如果你用'renders'替换'renderer',则会出现另一个错误:Transform does not contain渲染的定义。可能是什么原因?之前:http://prntscr.com/l9qe51 之后: http: //prntscr.com/l9qe9f
方法
GetComponent<T>()
是类方法MonoBehaviour
。它搜索它挂起的对象,指定的类而不是 T。换句话说,在您的情况下,通过调用
renders = GetComponent<Renderer>();
- 您正在寻找当前对象上的 Renderer 组件并将其分配给私有变量renders
。之后,您开始循环遍历所有子对象。您获取
Transform
对象的组件,Transform child = transform.GetChild(i);
然后询问if (child.renderer != null)
。那些。您在询问 Transform 类的公共渲染器字段是否为空。这是不推荐使用的代码,很快就会被删除,建议您使用
GetComponent<T>()
. 在您的情况下,它看起来像这样:那些。对于您尝试通过 GetComponent() 方法查找的每个子对象
Renderer
,如果结果不为 null - 该对象将添加到列表中。