예제 #1
0
    //回调形式的异步加载方式
    public void Get(string name, object param, Action <GameObject, object> onGet, bool checkPreLoading = true)
    {
        LinkedList <GameObjectPoolObject> l = m_pools.Get(name);

        //已经加载过的
        if (l != null)
        {
            onGet(Get(l).gameObject, param);
            return;
        }

        //正在加载中的
        PoolRequests poolReqs = m_requests.Get(name);

        if (poolReqs != null)
        {
            poolReqs.Add(onGet, param);
            return;
        }
        if (checkPreLoading && !s_checkPreLoading)
        {
            Debuger.LogError("Get2.没有在预加载期间加载资源 :{0}", name);
        }
        //没有加载过的
        ResourceRequest resReq = Resources.LoadAsync <GameObject>(name);

        poolReqs         = new PoolRequests(this, name, resReq);
        m_requests[name] = poolReqs;
        poolReqs.Add(onGet, param);
    }
예제 #2
0
    public void PreLoad(string name, bool checkPreLoading = true)
    {
        LinkedList <GameObjectPoolObject> l = m_pools.Get(name);

        //已经加载过的
        if (l != null)
        {
            return;
        }

        //正在加载中的
        PoolRequests poolReqs = m_requests.Get(name);

        if (poolReqs != null)
        {
            return;
        }

        if (string.IsNullOrEmpty(name))
        {
            Debuger.LogError("预加载的时候传进来空的资源名");
            return;
        }
        if (checkPreLoading && !s_checkPreLoading)
        {
            Debuger.LogError("PutPrefab.没有在预加载期间加载资源:{0}", name);
        }

        //没有加载过的
        ResourceRequest resReq = Resources.LoadAsync <GameObject>(name);

        poolReqs         = new PoolRequests(this, name, resReq);
        m_requests[name] = poolReqs;
    }
예제 #3
0
    //传统的异步加载方式,可以让StartCoroutine很方便使用
    public PoolRequest Get(string name)
    {
        LinkedList <GameObjectPoolObject> l = m_pools.Get(name);

        //已经加载过的
        if (l != null)
        {
            PoolRequest r = new PoolRequest(name, null);
            r.Asset = Get(l).gameObject;
            return(r);
        }

        //正在加载中的
        PoolRequests poolReqs = m_requests.Get(name);

        if (poolReqs != null)
        {
            return(poolReqs.Add());
        }
        if (!s_checkPreLoading)
        {
            Debuger.LogError("Get.没有在预加载期间加载资源 :{0}", name);
        }
        //没有加载过的
        ResourceRequest resReq = Resources.LoadAsync <GameObject>(name);

        poolReqs         = new PoolRequests(this, name, resReq);
        m_requests[name] = poolReqs;
        return(poolReqs.Add());
    }
예제 #4
0
 public PoolRequest(string path, PoolRequests p)
 {
     m_parent = p;
     m_path   = path;
 }