如果修改的目标被设置成prefab,需要调用EditorUtility.SetDirty(ComponentObject)方法在Editor中将其标记为脏(变化过的)才能保存修改。否则会出现虽然属性被修改,但是运行时,系统会自动还原成prefab的参数。
void ChangeProperty(Component comp)
{
PrefabType prefabType = PrefabUtility.GetPrefabType(comp.gameObject);
if (prefabType == PrefabType.DisconnectedPrefabInstance || prefabType == PrefabType.PrefabInstance)
EditorUtility.SetDirty(comp);
}