Unity 查找对象 API 对比

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

posted @ 2026-01-17 22:01  高山仰止666  阅读(2)  评论(0)    收藏  举报