| 方法 |
返回结果 |
查找范围 |
性能特点 |
使用场景 |
| FindObjectOfType() |
返回场景中第一个找到的对象 |
遍历整个场景 |
较旧实现,GC 分配较多 |
传统用法,已不推荐,主要用于兼容旧代码 |
| FindObjectsOfType() |
返回场景中所有符合类型的对象数组 |
遍历整个场景 |
较旧实现,GC 分配较多 |
当需要获取所有该类型对象时使用 |
| FindAnyObjectByType() |
返回任意一个符合类型的对象 |
遍历场景直到找到 |
更快,找到一个就停止 |
当只需要确认存在某类型对象,不在乎是哪一个 |
| FindFirstObjectByType() |
返回第一个符合类型的对象 |
遍历场景直到找到 |
性能类似,但结果更确定性 |
当需要稳定的“第一个对象”结果时使用 |
| FindObjectsByType(FindObjectsSortMode) |
返回场景中所有符合类型的对象数组 |
遍历整个场景,可选是否包含未激活对象 |
新实现,更快,GC 更少,支持排序参数 |
推荐替代旧版,当需要获取所有对象时使用 |
// 获取场景中所有 Player,不排序(最快)
var players = FindObjectsByType<Player>(FindObjectsSortMode.None);
// 获取场景中所有 Enemy,按 InstanceID 排序
var enemies = FindObjectsByType<Enemy>(FindObjectsSortMode.InstanceID);