private static void Apply(ComponentSaveDataKey key) { var obj = EditorUtility.InstanceIDToObject(key.objId) as GameObject; if (obj == null) { return; } var data = _compData[key].serializedObj; var serializedObj = new SerializedObject(data.targetObject); var prop = data.GetIterator(); while (prop.NextVisible(true)) { serializedObj.CopyFromSerializedProperty(prop); } serializedObj.ApplyModifiedProperties(); _compData.Remove(key); }
private static void Add(Component component, SaveCommand cmd) { var compId = component.GetInstanceID(); var objId = component.gameObject.GetInstanceID(); var key = new ComponentSaveDataKey(objId, compId); var data = new SerializedObject(component); if (_compData.ContainsKey(key)) { _compData[key] = new SaveDataValue(data, cmd); } else { _compData.Add(key, new SaveDataValue(data, cmd)); } var prop = new SerializedObject(component).GetIterator(); while (prop.NextVisible(true)) { data.CopyFromSerializedProperty(prop); } }