GameObject.FindObjectOfType<>();
官方解释是返回Type类型第一个激活的加载的对象。
很多人会不理解什么是第一个激活加载的对象。
简单地说就是当你添加一个组件或者游戏物体时Unity就会在物体列表中添加。
物体列表是栈结构先进后出所以第一个激活的加载的对象就是你最后添加上去的组件或物体。
举个例子来说 :
在场景中一次添加Cube ,Cube(1),Cube(2),Cube(3),Cube(4)
如图所示:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API : MonoBehaviour {
public MeshRenderer mR;//用于接受查找到的物体组件
private void Start()
{
//查找组件
mR = GameObject.FindObjectOfType<MeshRenderer>();
}
}
将脚本放到Cube中:(可以放在任意一个物体上)
运行:
获取的物体组件就是你最后添加的Cube(4)上的组件
那完整的物体列表是什么样的呢?
接下来咱们来看看:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class API : MonoBehaviour {
public MeshRenderer[] mRs;用于接受查找到的物体组件
private void Start()
{
//查找全部物体激活状态下的物体组件
mRs = GameObject.FindObjectsOfType<MeshRenderer>();
}
}
运行:
这样就很明显物体列表数组中的元素正好是你添加顺序的倒序。