public StdEncoder Add_GUID(string tag, UnityEngine.Object obj) { var guid = obj.GetGUID(); if (guid != null) { Add_String(tag, guid); } return(this); }
private Hashtable GetSave_Child(Transform childTransform) { Hashtable hashtable = new Hashtable(); hashtable["name"] = childTransform.name; hashtable["Transform_hashtable"] = childTransform.GetSerializeHashtable(); Object prefab = EditorUtility.GetPrefabParent(childTransform.gameObject); bool isPrefab = prefab != null; if (isPrefab) { long prefabRefId = AssetPathRefManager.instance.GetRefIdByGuid(prefab.GetGUID()); hashtable["prefab_ref_id"] = prefabRefId; refIdHashtable[prefabRefId] = true; } //如果是预设则不用递归子节点 if (!isPrefab && childTransform.childCount > 0) { hashtable["child_list"] = GetSave_ChildList(childTransform); } List <Type> exceptList = new List <Type> { typeof(Transform), typeof(Tilemap) }; var components = childTransform.GetComponents <Component>(); for (var i = 0; i < components.Length; i++) { var component = components[i]; if (!exceptList.Contains(component.GetType())) { var componentHashtable = component.InvokeExtensionMethod <Hashtable>("GetSerializeHashtable") ?? new Hashtable(); string key = string.Format("{0}_hashtable", component.GetType().FullName); hashtable[key] = componentHashtable; } } Tilemap tilemap = childTransform.GetComponent <Tilemap>(); if (tilemap != null) { hashtable["Tilemap_hashtable"] = tilemap.GetSerializeHashtable(refIdHashtable); } return(hashtable); }