/*
* 反射更改编辑器属性
*
*/
public static class LayerDemo
{
/*
* SerializedObject -》 ApplyModifiedProperties 拿string,通过GetIterator拿相应string,拿到相应string再GetArrayElementAtIndex拿出指定string
*
* http://www.manew.com/youxizz/2572.html
*
* SerializedProperty -》 GetArrayElementAtIndex ,GetIterator
*
* https://blog.csdn.net/liqiangeastsun/article/details/50359188
*
* 编辑器.asset读取乱码问题:edit->project settings -> editor -> asset serialization更改mode
*/
[MenuItem("demo/set layer")]
public static void SetLayer()
{
SerializedObject ob = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]);
SerializedProperty pro = ob.GetIterator();
while (pro.NextVisible(true))
{
if (pro.name == "layers")
{
for (int i = 8; i < pro.arraySize; i++)
{
SerializedProperty p = pro.GetArrayElementAtIndex(i);
if (p.stringValue == string.Empty)
{
p.stringValue = "test1";
ob.ApplyModifiedProperties();
return;
}
}
}
}
}
}