Esempio n. 1
0
        public StdEncoder Add_GUID(string tag, UnityEngine.Object obj)
        {
            var guid = obj.GetGUID();

            if (guid != null)
            {
                Add_String(tag, guid);
            }

            return(this);
        }
Esempio n. 2
0
        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);
        }