版本: Unity 6 (6000.0)
语言英语
  • C#

Object.FindFirstObjectByType

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们会阅读用户提出的每个建议更改,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请 <a>重试</a>几分钟后。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public static T FindFirstObjectByType();

声明

public static T FindFirstObjectByType(FindObjectsInactive findObjectsInactive);

声明

public static Object FindFirstObjectByType(Type type);

声明

public static Object FindFirstObjectByType(Type type, FindObjectsInactive findObjectsInactive);

参数

type 要查找的对象类型。
findObjectsInactive 是否包含附加到非活动 GameObjects 的组件。如果您未指定此参数,此函数不会将非活动对象包含在结果中。

返回值

T 返回与指定类型匹配的第一个活动加载对象。如果没有任何对象与指定类型匹配,则返回 null。

描述

检索类型为 type 的第一个活动加载对象。

Object.FindFirstObjectByType 不会返回资源(例如网格、纹理或预制件)或非活动对象。它也不会返回设置了 HideFlags.DontSave 的对象。

注意: 此函数非常占用资源。最佳做法是不要在每一帧都使用此函数,而是大多数情况下使用单例模式。或者,如果您只需要匹配对象的任何实例,而不是第一个实例,您可以使用更快的 Object.FindAnyObjectByType

另请参阅: Object.FindAnyObjectByType, Object.FindObjectsByType.

using UnityEngine;
using System.Collections;

// Search for the first object of Types TextMesh and CanvasRenderer, // if found print the names, else print a message // that says that it was not found. public class ExampleClass : MonoBehaviour { void Start() { TextMesh texture = (TextMesh)FindFirstObjectByType(typeof(TextMesh)); if (texture) Debug.Log("TextMesh object found: " + texture.name); else Debug.Log("No TextMesh object could be found");

CanvasRenderer canvas = FindFirstObjectByType<CanvasRenderer>(); if (canvas) Debug.Log("CanvasRenderer object found: " + canvas.name); else Debug.Log("No CanvasRenderer object could be found"); } }