예제 #1
0
    public int createEffect(int effId, EffectInfo info)
    {
        EffectConfigConfig config = EffectConfigConfig.Get(effId);
        int uid = -1;

        if (config != null)
        {
            uid         = MathUtils.get32UID();
            info.config = config;
            GameObject cacheGo = PoolMgr.Instance.getObj(config.tempId + config.path);
            if (cacheGo == null)
            {
                ResMgr.Instance.load(effectPathPre + config.path, (obj) =>
                {
                    GameObject go = obj as GameObject;
                    BaseEffect be = go.AddComponent(getType((EffectType)config.effectType)) as BaseEffect;
                    be.id         = uid;
                    be.setInfo(info);
                    if (!createdEff.ContainsKey(uid))
                    {
                        createdEff.Add(uid, be);
                    }
                });
            }
            else
            {
                BaseEffect be = cacheGo.GetComponent <BaseEffect>();
                if (be != null)
                {
                    be.setInfo(info);
                    cacheGo.SetActive(true);
                    uid = be.id;
                }
            }
        }
        return(uid);
    }