public virtual void Setup() { saveables = new ISaveableAndLoadable[0]; saveables = saveables.AddRange(GetComponentsInChildren <ISaveableAndLoadable>()); // SaveAndLoadObject sameTypeObj; // if (!SaveAndLoadManager.saveAndLoadObjectTypeDict.TryGetValue(typeId, out sameTypeObj)) // { saveEntries = new SaveEntry[saveables.Length]; for (int i = 0; i < saveables.Length; i++) { SaveEntry saveEntry = new SaveEntry(); saveEntry.saveableAndLoadable = saveables[i]; List <SaveEntry.MemberEntry> memberEntries = new List <SaveEntry.MemberEntry>(); PropertyInfo[] properties = saveEntry.saveableAndLoadable.GetType().GetProperties(); for (int i2 = 0; i2 < properties.Length; i2++) { PropertyInfo property = properties[i2]; SaveAndLoadValue saveAndLoadValue = Attribute.GetCustomAttribute(property, typeof(SaveAndLoadValue)) as SaveAndLoadValue; if (saveAndLoadValue != null) { SaveEntry.MemberEntry memberEntry = new SaveEntry.MemberEntry(); // memberEntry.isShared = saveAndLoadValue.isShared; memberEntry.member = property; memberEntries.Add(memberEntry); } } FieldInfo[] fields = saveEntry.saveableAndLoadable.GetType().GetFields(); for (int i2 = 0; i2 < fields.Length; i2++) { FieldInfo field = fields[i2]; SaveAndLoadValue saveAndLoadValue = Attribute.GetCustomAttribute(field, typeof(SaveAndLoadValue)) as SaveAndLoadValue; if (saveAndLoadValue != null) { SaveEntry.MemberEntry memberEntry = new SaveEntry.MemberEntry(); // memberEntry.isShared = saveAndLoadValue.isShared; memberEntry.member = field; memberEntry.isField = true; memberEntries.Add(memberEntry); } } saveEntry.memberEntries = memberEntries.ToArray(); saveEntries[i] = saveEntry; } // SaveAndLoadManager.saveAndLoadObjectTypeDict.Add(typeId, this); // } // else // { // saveEntries = sameTypeObj.saveEntries; // SaveEntry saveEntry; // for (int i = 0; i < saveEntries.Length; i ++) // { // saveEntry = saveEntries[i]; // saveEntry.saveableAndLoadable = saveables[i]; // saveEntry.saveableAndLoadObject = this; // } // } }
// #if UNITY_EDITOR // public virtual void Start () // { // if (Application.isPlaying) // return; // if (uniqueId == 0) // uniqueId = Random.Range(int.MinValue, int.MaxValue); // Transform[] _saveableChildren = new Transform[0]; // _saveableChildren.AddRange(saveableChildren); // Transform trs = GetComponent<Transform>(); // if (!_saveableChildren.Contains(trs) && GetComponentsInChildren<ISavableAndLoadable>().Length > 0) // { // _saveableChildren = _saveableChildren.Add(trs); // saveableChildren = _saveableChildren; // } // } // public virtual void Reset () // { // Start (); // } // #endif public virtual void Init() { foreach (Transform saveableChild in saveableChildren) { saveables = saveables.AddRange(saveableChild.GetComponentsInChildren <ISavableAndLoadable>()); } SaveAndLoadObject sameTypeObj; if (!SaveAndLoadManager.saveAndLoadObjectTypeDict.TryGetValue(typeId, out sameTypeObj)) { saveEntries = new SavedObjectEntry[saveables.Length]; for (int i = 0; i < saveables.Length; i++) { SavedObjectEntry saveEntry = new SavedObjectEntry(); saveEntry.saveAndLoadObject = this; saveEntry.saveableAndLoadable = saveables[i]; saveEntry.members = saveEntry.members.AddRange(saveEntry.saveableAndLoadable.GetType().GetMembers()); for (int i2 = 0; i2 < saveEntry.members.Length; i2++) { SaveAndLoadValue saveAndLoadValue = Attribute.GetCustomAttribute(saveEntry.members[i2], typeof(SaveAndLoadValue)) as SaveAndLoadValue; if (saveAndLoadValue == null) { saveEntry.members = saveEntry.members.RemoveAt(i2); i2--; } } saveEntries[i] = saveEntry; } SaveAndLoadManager.saveAndLoadObjectTypeDict.Add(typeId, this); } else { saveEntries = sameTypeObj.saveEntries; SavedObjectEntry saveEntry; for (int i = 0; i < saveEntries.Length; i++) { saveEntry = saveEntries[i]; saveEntry.saveableAndLoadable = saveables[i]; saveEntry.saveAndLoadObject = this; saveEntries[i] = saveEntry; } } }
public virtual void Setup() { saveables = GetComponentsInChildren <ISavableAndLoadable>(); // SaveAndLoadObject sameTypeObj; // if (!SaveAndLoadManager.saveAndLoadObjectTypeDict.TryGetValue(typeId, out sameTypeObj)) // { saveEntries = new SaveEntry[saveables.Length]; for (int i = 0; i < saveables.Length; i++) { SaveEntry saveEntry = new SaveEntry(); saveEntry.saveableAndLoadable = saveables[i]; List <SaveEntry.MemberEntry> memberEntries = new List <SaveEntry.MemberEntry>(); MemberInfo[] members = saveEntry.saveableAndLoadable.GetType().GetMembers(); for (int i2 = 0; i2 < members.Length; i2++) { MemberInfo member = members[i2]; SaveAndLoadValue saveAndLoadValue = Attribute.GetCustomAttribute(member, typeof(SaveAndLoadValue)) as SaveAndLoadValue; if (saveAndLoadValue != null) { SaveEntry.MemberEntry memberEntry = new SaveEntry.MemberEntry(); // memberEntry.isShared = saveAndLoadValue.isShared; memberEntry.member = member; memberEntries.Add(memberEntry); } } saveEntry.memberEntries = memberEntries.ToArray(); saveEntries[i] = saveEntry; } // SaveAndLoadManager.saveAndLoadObjectTypeDict.Add(typeId, this); // } // else // { // saveEntries = sameTypeObj.saveEntries; // SaveEntry saveEntry; // for (int i = 0; i < saveEntries.Length; i ++) // { // saveEntry = saveEntries[i]; // saveEntry.saveableAndLoadable = saveables[i]; // saveEntry.saveableAndLoadObject = this; // } // } }