예제 #1
0
        public ResourceSpawnHandle SpawnAsync(ulong pathHash, int priority)
        {
            ResourceSpawnHandle spawnHandle = new ResourceSpawnHandle();

            ResourceSpawnRequest request = m_loader.TryGetRequest(pathHash);

            if (request == null)
            {
                request             = new ResourceSpawnRequest(pathHash, priority);
                request.OnLoadDone += _OnRequestDone;
                m_loader.PushRequst(request);
            }
            request.AddSpawnHandle(spawnHandle);

            return(spawnHandle);
        }
예제 #2
0
        private void _OnRequestDone(RequestBase <ResourcePool> requestBase)
        {
            ResourceSpawnRequest request = requestBase as ResourceSpawnRequest;

            if (request == null)
            {
                Log.Error("[ResourcePoolManager]Invalid request.");
                return;
            }

            ResourcePool resourcePool = request.asset as ResourcePool;

            if (resourcePool == null)
            {
                Log.Error("[ResourcePoolManager]Invalid resource pool.");
                return;
            }

            _AddResourcePool(resourcePool);

            foreach (var spawnHandle in request.spawnHandleList)
            {
                if (!spawnHandle.success)
                {
                    continue;
                }

                int spawnID = spawnHandle.spawnID;
                if (m_spawnID2PathHash.ContainsKey(spawnID))
                {
                    GameObject gameObject     = spawnHandle.gameObject;
                    string     gameObjectName = gameObject != null ? gameObject.name : "Unknown";
                    Log.ErrorFormat("[ResourcePoolManager]Duplicated spawn id for gameObject({0})", gameObjectName);
                    if (Application.isPlaying)
                    {
                        GameObject.Destroy(gameObject);
                    }
                    else
                    {
                        GameObject.DestroyImmediate(gameObject);
                    }
                    continue;
                }

                m_spawnID2PathHash[spawnID] = resourcePool.Id;
            }
        }