Ejemplo n.º 1
0
 /// <summary>
 /// 删除指定特效..
 /// </summary>
 /// <param name="fx">Fx.</param>
 public void RemoveEffect(EffectFx fx)
 {
     if (fx != null)
     {
         fx.life = 0;
     }
 }
Ejemplo n.º 2
0
    //创建SceneFx...
    public static EffectFx CreateSceneFx(string name, float life)
    {
        GameObject g = new GameObject("FX_" + name);
        //g.layer = (int)LayerEnum.FX;
        EffectFx entity = g.AddComponent <EffectFx> ();

        entity.life = life;
        return(entity);
    }
Ejemplo n.º 3
0
    public static EffectFx CreateSceneFx(string name, float life)
    {
        GameObject fxObj  = new GameObject("FX_" + name);
        EffectFx   entity = fxObj.AddComponent <EffectFx> ();

        entity._bodyObject = fxObj;
        entity.life        = life;
        return(entity);
    }
Ejemplo n.º 4
0
    public void DestroyEffect(EffectFx fx)
    {
        if (fx == null)
        {
            return;
        }

        Log.debug(this, "[EffectManger][DestroyEffect] " + fx.prefabPath);
        _playingEffect.Remove(fx);
        Destroy(fx.gameObject);
    }
Ejemplo n.º 5
0
    /// <summary>
    /// Attachs the body object to the fx.gameobject.
    /// </summary>
    /// <param name="fx">Fx.</param>
    /// <param name="baseObject">Base object.</param>
    void AttachBodyObject(EffectFx fx, GameObject baseObject)
    {
        Log.debug(this, "[EffectManager][AttachBodyObject] SceneFx " + fx.prefabPath + " prefab " + baseObject);
        GameObject bodyObject = GameObject.Instantiate(baseObject) as GameObject;

        bodyObject.transform.parent        = fx.transform;
        bodyObject.transform.localPosition = Vector3.zero;
        bodyObject.transform.localScale    = Vector3.one;
        bodyObject.transform.localRotation = Quaternion.identity;

        fx.bodyObject = bodyObject;
        fx.IsDone     = true;

        //EffectScale..
        //TODO: some sprite anmation script...
        CycleImageAnimation [] ps = fx.gameObject.GetComponentsInChildren <CycleImageAnimation>();
        if (ps != null && ps.Length > 0)
        {
            //change render camera or something else to do...
        }

        //CommonFunction.ChangeLayer(fx.gameObject, fx.gameObject.layer);
    }
Ejemplo n.º 6
0
    //播放特效,parent 特效对象的父对象, scale 特效缩放比,.
    public EffectFx PlayEffect(string prefabName, GameObject parent, string extraName = "", float scale = 1, float life = 1,
                               System.Action <EffectFx> loadFinishCallBack            = null)
    {
        Log.debug(this, "[EffectManger][PlayEffect] play " + prefabName + " parent " + parent + "extraName " + extraName + " scale " + scale + " life " + life);
        EffectFx fx = EffectManager.CreateSceneFx(extraName, life);

        fx.transform.parent = null;

        fx.gameObject.transform.localScale = scale * Vector3.one;
        fx.scale = scale;
        fx.gameObject.transform.localRotation = Quaternion.identity;
        if (parent != null)
        {
            fx.transform.parent = parent.transform;
        }
        fx.gameObject.transform.localPosition = Vector3.zero;
        fx.onLoadFinishCallBack = loadFinishCallBack;


        fx.prefabPath = prefabName;
        _playingEffect.Add(fx);
        if (_effectPrefabList.ContainsKey(prefabName) == false)
        {
            LoadEffect(prefabName);
            return(fx);
        }

        GameObject baseObject = _effectPrefabList[prefabName];

        AttachBodyObject(fx, baseObject);
        if (loadFinishCallBack != null)
        {
            loadFinishCallBack(fx);
        }
        return(fx);
    }