Editor下代码代码对预制体的属性修改过后要对预制体进行apply保存操作,否则虽然代码执行了修改,但是原预制体的属性不会发生变化,在所有的修改操作完成后加上以下代码
//GameObject cur = Selection.activeGameObject; 当前选中的预制体
//保存预制体的修改,更新属性到相应的预设里
EditorUtility.SetDirty(cur);
AssetDatabase.Refresh();
Unity3D的EditorUtility类
EditorUtility.SetDirty :这个函数告诉引擎,相关对象所属于的Prefab已经发生了更改。方便,当我们更改了自定义对象的属性的时候,自动更新到所属的Prefab中。
-
EditorUtility.IsPersistent:这个函数用于判定是否对象是被保存到硬盘中的。
-
EditorUtility.DisplayDialog:显示一个对话框,类似于MessageBox,有Yes、No按钮
-
EditorUtility.OpenFilePanel/SaveFilePanel:选择/保存一个文件的文件摄取窗口。
-
EditorUtility.OpenFolderPanel/SaveFolderPanel:选择/保存一个文件夹的文件夹摄取窗口
-
EditorUtility.CompressTexture:压缩图片到相应格式
-
EditorUtility.CloneComponent:复制一个现有的Component
-
EditorUtility.CopySerialized:拷贝一个Object所有的属性设置等到另外一个Object
-
EditorUtility.GetMiniThumbnail:得到资源小图标
示例:
/// <summary>
/// 手机端隐藏输入框上面的小输入框
/// </summary>
private void HideMobileInput()
{
GameObject cur = Selection.activeGameObject;
if (cur == null)
{
return;
}
List<Transform> list = new List<Transform>();
foreach (Transform transform in cur.GetComponentsInChildren<Transform>() )
{
list.Add(transform);
}
for (int i = 0; i < list.Count; i++)
{
if (list[i].transform.GetComponent<InputField>()!=null)
{
Debug.Log(list[i].transform.name);
list[i].transform.GetComponent<InputField>().shouldHideMobileInput = true;
}
}
//保存预制体的修改,更新属性到相应的预设里
EditorUtility.SetDirty(cur);
AssetDatabase.Refresh();
}