我希望使用Unity的ObjectField让用户搜索特定类型的对象。我知道构造函数允许使用<add key="ActiveDirectoryUser" value="user"/>
<add key="ActiveDirectoryPass" value="pass"/>
<membership defaultProvider="ADMembershipProvider">
<providers>
<clear />
<add name="ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="ADConnectionString"
connectionUsername="userfromabove"
connectionPassword="passfromabove"
attributeMapUsername="sAMAccountName" />
</providers>
</membership>
,但这似乎不允许对自定义组件进行过滤。
基本上,我以前的编辑器脚本设置了对象,并在每个组件上放置了一个唯一的自定义脚本,但是我没有成功地使用ObjectField来搜索那些对象。如果我将对象字段中的typeOf(objectType)
更改为我的组件,则它始终为空,尽管在我的项目中附加了许多附加该脚本的预制件。
有人有过这方面的成功吗?使用typeOf
找到它们,但这会找到所有游戏对象。有没有办法限制这个?或者只保留它来查看特定的文件夹?
答案 0 :(得分:0)
在字段本身停留为Object类型时添加过滤器有点棘手。这是一种方法。
尝试打开自定义ObjectPicker。为此,您必须隐藏默认的对象选择器,并使用设置的searchFilter调用它。这是很多工作。
将https://docs.unity3d.com/ScriptReference/EditorGUIUtility.ShowObjectPicker.html与searchFilter配合使用,该条件与您添加到要在ObjectPicker中显示的每个对象的组件相匹配。例如"t:objectType"
。
在https://answers.unity.com/questions/554012/how-do-i-use-editorguiutilityshowobjectpicker-c.html
上有一些使用ShowObjectPicker的很好的信息。这是一则帖子,可以隐藏默认的对象选择器Is there any way to hide the "Object picker" of an EditorGUILayout.ObjectField in Unity Isnpector?
您需要创建自己的Editor GUI.Button,以使用自定义searchFilter调出ShowObjectPicker。
作为一个旁注,要对文件资产执行相同的操作,请使用“ l:labelName” fileFilter而不是“ t:objectType”。您可以使用Unity编辑器UI设置标签,如下所示:
或带有“ ref:relative / path / from / assets / to / material / material.mat”