示例#1
0
        private BaseEffectView CreateEffectView(BaseEffectData baseEffectData)
        {
            var effectId         = baseEffectData.EffectId;
            var effectPrefabPath = string.Format("Prefabs/CombatEffectVisuals/{0}EffectVisual", effectId);
            var effectObject     = ObjectPool.Spawn(effectPrefabPath, _parentTransform);

            BaseEffectView effectView = effectObject.GetComponent <BaseEffectView>();

            effectView.InitData(_selfEntity, effectId);

            return(effectView);
        }
示例#2
0
        public void CheckEffectsView()
        {
            if (!_selfEntity.hasActiveEffect)
            {
                return;
            }

            var activeEffectData = _selfEntity.activeEffect.value;

            foreach (var baseEffectData in activeEffectData)
            {
                var            isEffectActive = baseEffectData.Value.RemainTime > 0;
                BaseEffectView effectView     = null;
                //nếu effect đang được active
                if (isEffectActive)
                {
                    //nếu chưa có view thì tạo mới
                    if (!_effectViews.TryGetValue(baseEffectData.Key, out effectView))
                    {
                        //tạo view mới
                        effectView = CreateEffectView(baseEffectData.Value);
                        _effectViews.Add(baseEffectData.Key, effectView);
                    }

                    //show effectView
                    effectView.Show();
                }
                // nếu không active
                else
                {
                    //remove view: baseEffectData.Key
                    if (_effectViews.TryGetValue(baseEffectData.Key, out effectView))
                    {
                        Debug.Log("CheckEffectsView remove eff view");
                        effectView.Hide();
                        _effectViews.Remove(baseEffectData.Key);
                    }
                }
            }
        }