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

EditorGUILayout.ObjectField

建议修改

成功!

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

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static Object ObjectField(Object obj, Type objType, bool allowSceneObjects, params GUILayoutOption[] options);

声明

public static Object ObjectField(string label, Object obj, Type objType, bool allowSceneObjects, params GUILayoutOption[] options);

声明

public static Object ObjectField(GUIContent label, Object obj, Type objType, bool allowSceneObjects, params GUILayoutOption[] options);

参数

label 字段前面的可选标签。
obj 字段显示的对象。
objType 可以分配的对象类型。
allowSceneObjects 允许分配场景对象。有关更多信息,请参阅说明。
options 一个可选的布局选项列表,用于指定额外的布局属性。这里传递的任何值都将覆盖由style定义的设置。其他资源:GUILayout.WidthGUILayout.HeightGUILayout.MinWidthGUILayout.MaxWidthGUILayout.MinHeightGUILayout.MaxHeightGUILayout.ExpandWidthGUILayout.ExpandHeight

返回值

Object 用户设置的对象。

说明

创建一个接收任何对象类型的字段。

您可以通过拖放或使用对象选择器选择对象来分配对象。

如果对象引用存储为资产的一部分,请确保allowSceneObjects参数为false,因为资产无法存储对场景中对象的引用。

如果 ObjectField 是脚本组件自定义编辑器的一部分,请使用 EditorUtility.IsPersistent() 检查该组件是否在资产或场景对象上。

有关更多信息,请参阅Editor 类中的示例。


通过在对象字段中选择游戏对象来搜索帮助页面。

// EditorScript that quickly searches for a help page
// about the selected Object.
//
// If no such page is found in the Manual it opens the Unity forum.

using UnityEditor; using UnityEngine; using System.Collections;

public class ExampleClass : EditorWindow { public Object source;

[MenuItem("Example/ObjectField Example _h")] static void Init() { var window = GetWindowWithRect<ExampleClass>(new Rect(0, 0, 165, 100)); window.Show(); }

void OnGUI() { EditorGUILayout.BeginHorizontal(); source = EditorGUILayout.ObjectField(source, typeof(Object), true); EditorGUILayout.EndHorizontal();

if (GUILayout.Button("Search!")) { if (source == null) ShowNotification(new GUIContent("No object selected for searching")); else if (Help.HasHelpForObject(source)) Help.ShowHelpForObject(source); else Help.BrowseURL("https://forum.unity3d.com/search.php"); } } }



您还可以使用options参数更改控件的外观。以下示例更改以大型字段格式显示的 Sprite ObjectField 的外观。


Sprite 字段的两种不同布局选项。

using UnityEditor;
using UnityEngine;

public class SpriteExample : EditorWindow { public Sprite sprite;

[MenuItem("Example/ObjectField Sprite Example")] static void Init() { var window = GetWindowWithRect<SpriteExample>(new Rect(0, 0, 165, 100)); window.Show(); }

void OnGUI() { sprite = EditorGUILayout.ObjectField(sprite, typeof(Sprite), false, GUILayout.Height(EditorGUIUtility.singleLineHeight)) as Sprite; } }

声明

public static void ObjectField(SerializedProperty property, params GUILayoutOption[] options);

声明

public static void ObjectField(SerializedProperty property, GUIContent label, params GUILayoutOption[] options);

声明

public static void ObjectField(SerializedProperty property, Type objType, params GUILayoutOption[] options);

声明

public static void ObjectField(SerializedProperty property, Type objType, GUIContent label, params GUILayoutOption[] options);

参数

property 字段显示的对象引用属性。
objType 可以分配的对象类型。
label 字段前面的可选标签。传递GUIContent.none 以隐藏标签。
options 一个可选的布局选项列表,用于指定额外的布局属性。这里传递的任何值都将覆盖由style定义的设置。
其他资源:GUILayout.WidthGUILayout.HeightGUILayout.MinWidthGUILayout.MaxWidthGUILayout.MinHeightGUILayout.MaxHeightGUILayout.ExpandWidthGUILayout.ExpandHeight

说明

创建一个接收任何对象类型的字段。

已弃用。使用页面顶部的重载,并使用allowSceneObjects参数。