Skip to content

Commit bb2d392

Browse files
committed
说明文档
1 parent 776e554 commit bb2d392

File tree

6 files changed

+27
-59
lines changed

6 files changed

+27
-59
lines changed

Assets/Editor/TestInspector.cs

+13-56
Original file line numberDiff line numberDiff line change
@@ -32,32 +32,28 @@ public override void OnInspectorGUI()
3232

3333
EditorGUILayout.BeginHorizontal();
3434
EditorGUILayout.PropertyField(person);
35-
EditorGUIUtil.ObjectPickerField(person);
35+
EditorGUIUtil.ObjectPickerField(person, null, "Assets/AC");
3636
EditorGUILayout.EndHorizontal();
3737

38+
EditorGUILayout.BeginHorizontal();
3839
EditorGUILayout.PropertyField(person2);
39-
EditorGUILayout.PropertyField(person3);
40-
EditorGUILayout.PropertyField(person4);
41-
if (GUILayout.Button("选择对象"))
42-
{
43-
ObjectSelectorWindow.ShowObjectPicker<GameObject>(person.objectReferenceValue, OnObjectPicker1, "Assets/AC");
44-
}
45-
if (GUILayout.Button("选择对象2"))
40+
if (GUILayout.Button("C", EditorStyles.miniButton, GUILayout.Width(24f)))
4641
{
4742
ObjectSelectorWindow.ShowObjectPicker<Sprite>(person.objectReferenceValue, OnObjectPicker, "Assets");
4843
}
44+
EditorGUILayout.EndHorizontal();
4945

50-
if (GUILayout.Button("选择对象3"))
46+
EditorGUILayout.BeginHorizontal();
47+
EditorGUILayout.PropertyField(person3);
48+
if (GUILayout.Button("C", EditorStyles.miniButton, GUILayout.Width(24f)))
5149
{
5250
ObjectSelectorWindow.ShowObjectPicker<AudioClip>(person3.objectReferenceValue, OnObjectPicker3, "Assets/Sound");
5351
}
52+
EditorGUILayout.EndHorizontal();
5453

55-
if (GUILayout.Button("选择对象4"))
56-
{
57-
EditorGUIUtility.ShowObjectPicker<GameObject>(person.objectReferenceValue, false, String.Empty, 0);
58-
EditorApplication.update += updaterShow;
59-
}
60-
if (GUILayout.Button("选择对象5"))
54+
EditorGUILayout.BeginHorizontal();
55+
EditorGUILayout.PropertyField(person4);
56+
if (GUILayout.Button("C", EditorStyles.miniButton, GUILayout.Width(24f)))
6157
{
6258
GameObject go =
6359
AssetDatabase.LoadAssetAtPath<GameObject>(
@@ -71,6 +67,8 @@ public override void OnInspectorGUI()
7167
}
7268
ObjectSelectorWindow.ShowObjectPicker<AnimationClip>(person4.objectReferenceValue, OnObjectPicker4, "Assets/Standard Assets/Characters/ThirdPersonCharacter/Animation", ids);
7369
}
70+
EditorGUILayout.EndHorizontal();
71+
7472
targetObj.ApplyModifiedProperties();
7573
}
7674

@@ -103,45 +101,4 @@ private void OnObjectPicker(UnityEngine.Object obj)
103101
Debug.Log("点中了空");
104102
}
105103
}
106-
107-
private void updaterShow()
108-
{
109-
Debug.Log(1);
110-
if (m_TimeNow < 0)
111-
{
112-
m_TimeNow = EditorApplication.timeSinceStartup + 3f;
113-
}
114-
if (m_TimeNow <= EditorApplication.timeSinceStartup)
115-
{
116-
EditorApplication.update -= updaterShow;
117-
Debug.Log(2);
118-
ShowPicker();
119-
}
120-
}
121-
122-
private void ShowPicker()
123-
{
124-
string m_RequiredType = typeof (Sprite).Name;
125-
Assembly assembly = Assembly.GetAssembly(typeof(EditorGUIUtility));
126-
Type typeObjectSelector = assembly.GetType("UnityEditor.ObjectSelector");
127-
PropertyInfo get = typeObjectSelector.GetProperty("get", BindingFlags.Static | BindingFlags.Public | BindingFlags.GetProperty);
128-
FieldInfo listAreaInfo = typeObjectSelector.GetField("m_ListArea", BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic);
129-
PropertyInfo listPositionInfo = typeObjectSelector.GetProperty("listPosition",
130-
BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.NonPublic);
131-
EditorWindow objectSelector = get.GetValue(null, null) as EditorWindow;
132-
object listArea = listAreaInfo.GetValue(objectSelector);
133-
object listPosition = listPositionInfo.GetValue(objectSelector, null);
134-
135-
Type typeSearchFilter = assembly.GetType("UnityEditor.SearchFilter");
136-
object searchFilter = Activator.CreateInstance(typeSearchFilter);
137-
MethodInfo searchFieldStringToFilter = typeSearchFilter.GetMethod("SearchFieldStringToFilter",
138-
BindingFlags.Instance | BindingFlags.NonPublic);
139-
PropertyInfo classNames = typeSearchFilter.GetProperty("classNames",
140-
BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty);
141-
classNames.SetValue(searchFilter, new string[] { m_RequiredType }, null);
142-
143-
Type typeObjectListArea = assembly.GetType("UnityEditor.ObjectListArea");
144-
MethodInfo initInfo = typeObjectListArea.GetMethod("Init", BindingFlags.Instance | BindingFlags.Public);
145-
initInfo.Invoke(listArea, new object[] { listPosition, HierarchyType.Assets, searchFilter, true });
146-
}
147104
}

README.md

+14-3
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,27 @@
22
Unity 对象选择器
33

44
# 原因
5-
默认的对象选择器,无法设置指定的路径来选择对象。所以仿照自带的对象选择器来实现自己的一个对象选择器。
5+
默认的对象选择器,无法设置指定的路径来选择对象。所以仿照自带的对象选择器来实现自己的一个对象选择器。这样就可以限定其他人员只能在指定的路径来选择设置对象,不会导致设置错误的对象。另外,默认的对象选择器,只能普通预览对象,而不能像在检视器预览里那样进行操作,比如音频的播放,动画的播放预览等。
66

77
# 功能
88
* 可以设置指定路径
9-
* 音频文件可以播放
9+
* 可以操作资源的播放预览
1010

1111

1212
# 截图
13-
13+
普通对象选择:
1414
![](https://github.com/akof1314/ObjectPickerAdvanced/raw/master/Screenshots/1.png)
1515

16+
精灵图片选择:
1617
![](https://github.com/akof1314/ObjectPickerAdvanced/raw/master/Screenshots/2.png)
1718

19+
音频对象选择:
20+
![](https://github.com/akof1314/ObjectPickerAdvanced/raw/master/Screenshots/3.png)
21+
可以通过右侧的工具栏按钮,来播放音频。
22+
23+
动画片段选择:
24+
![](https://github.com/akof1314/ObjectPickerAdvanced/raw/master/Screenshots/4.gif)
25+
可以通过预览窗口上侧的时间轴,来播放动画片段。
26+
27+
# 源码地址
28+
GitHub地址:https://github.com/akof1314/ObjectPickerAdvanced

Screenshots/1.png

-1.9 KB
Loading

Screenshots/2.png

-9.72 KB
Loading

Screenshots/3.png

21.4 KB
Loading

Screenshots/4.gif

542 KB
Loading

0 commit comments

Comments
 (0)