Drag the prefab into the scene, make changes there, then hit Apply.
the two mentioned fields were private, so they shouldn't be serializedTell that to Unity. It serializes them regardless. Even private fields. But only for prefabs. I think it's a Unity bug.
Thanks, but I think the better approach would be to reset 'mInitDone' to 'false' in UIButtonColor's OnEnable:
protected virtual void OnEnable () { #if UNITY_EDITOR if (!Application.isPlaying) { mInitDone = false; // <-- this right here return; } #endif if (mInitDone) OnHover(UICamera.IsHighlighted(gameObject)); if (UICamera.currentTouch != null) { if (UICamera.currentTouch.pressed == gameObject) OnPress(true); else if (UICamera.currentTouch.current == gameObject) OnHover(true); } }