Пример #1
0
    //读取事件压入队列
    void pushAction(int type, string name, System.Action <Object> cb)
    {
        //读取缓存
        Object val = null;

        if (resSaver.TryGetValue(name, out val))
        {
            cb(val);
            return;
        }
        //事件储存
        var loadAction = new loadAction();

        loadAction.type     = type;
        loadAction.name     = name;
        loadAction.cbAction = cb;
        actionList.Push(loadAction);
        //判断是否空闲
        if (isFree)
        {
            dealAction();
        }
    }
Пример #2
0
    //处理资源
    void dealAction()
    {
        var popAction = actionList.Pop();

        if (popAction != null)
        {
            isFree = false;
            loadAction action = (loadAction)popAction;
            if (action.name == "" || action.name == null)
            {
                Debug.Log("action.name is empty");
                dealAction();
                return;
            }
            Object res = null;
            switch (action.type)
            {
            case 1: {
                //读取
                res = Resources.Load <Object>("Texture/" + action.name);
                if (res != null)
                {
                    Sprite sp = Sprite.Create(
                        res as Texture2D,
                        new Rect(0, 0, (res as Texture2D).width,
                                 (res as Texture2D).height),
                        new Vector2(0.5f, 0.5f));
                    res = (Object)sp;
                }
            }
            break;

            case 2: {
                //读取
                res = Resources.Load <Object>("Config/" + action.name);
            }
            break;

            case 3: {
                //读取
                res = Resources.Load <Object>("Prefab/" + action.name);
            }
            break;

            case 4: {
                //读取
                res = Resources.Load <Object>("Sound/" + action.name);
            }
            break;

            case 5: {
                //读取
                res = Resources.Load <Object>("Bone/" + action.name);
            }
            break;
            }
            ;
            //储存并回调
            if (res != null)
            {
                if (!resSaver.ContainsKey(action.name))
                {
                    resSaver.Add(action.name, res);
                }
                action.cbAction(res);
            }
            else
            {
                Debug.LogWarning(action.name);
                action.cbAction(null);
            }
            isFree = true;
        }
        else
        {
            isFree = true;
        }
    }