Exemple #1
0
        public void Free()
        {
            this.package = null;

            if (this.tempReferencesUnpack != null)
            {
                this.tempReferencesUnpack.Clear();
            }
            this.tempReferencesUnpack = null;
        }
                #pragma warning restore

        public UABPackage Run(GameObject[] objects, UABConfig config = null, List <ISerializer> serializers = null)
        {
            if (config == null)
            {
                config = Builder.GetDefaultConfig(required: true);
            }
            if (serializers == null)
            {
                serializers = Builder.GetAllSerializers(config);
            }

            this.Free();

            this.tempReferencesPack = new List <TempReferencePack>();
            this.tempBinariesPack   = new List <TempBinaryPack>();
            this.config             = config;

            var result = new UABPackage();

            // Pack GameObjects
            {
                result.objects = new UABGameObject[objects.Length];
                for (int i = 0; i < objects.Length; ++i)
                {
                    this.tempReferencesPack.Clear();

                    var obj = objects[i];
                    this.currentBundleName = BundleImporter.GetBundleName(obj);
                    var uGo = this.Pack(obj, serializers);
                    result.objects[i] = uGo;

                    this.BuildReferences(obj.transform);
                }
            }

            this.BuildBinaries(ref result.binaryHeaders, ref result.binaryData, serializers);

            this.Free();
            return(result);
        }
Exemple #3
0
        public GameObject[] Run(UABPackage package, UABConfig config = null, List <ISerializer> serializers = null)
        {
            if (this.unpackgedGameObjects != null)
            {
                return(this.unpackgedGameObjects);
            }

            if (config == null)
            {
                config = Builder.GetDefaultConfig(required: true);
            }
            if (serializers == null)
            {
                serializers = Builder.GetAllSerializers(config);
            }

            this.Free();

            this.package = package;
            this.tempReferencesUnpack = new Dictionary <int, Object>();

            var gos = new GameObject[package.objects.Length];

            for (int i = 0; i < package.objects.Length; ++i)
            {
                var go = this.Unpack(package.objects[i], serializers);
                go.hideFlags = HideFlags.HideAndDontSave;
                if (Application.isPlaying == true)
                {
                    GameObject.DontDestroyOnLoad(go);
                }
                gos[i] = go;
            }

            this.unpackgedGameObjects = gos;

            this.Free();
            return(gos);
        }
Exemple #4
0
 public static GameObject[] Unpack(UABPackage package, UABConfig config = null, List <ISerializer> serializers = null)
 {
     return(new UABUnpacker().Run(package, config, serializers));
 }