Ejemplo n.º 1
0
        void StopMaterialControl()
        {
            //清空动画
            if (FadeInOutMaterialColor)
            {
                //如果运行模式不是外部指定的
                if (FadeInOutMaterialColor.RunMode == EffectRunMode.OutSiedePointed)
                {
                    FadeInOutMaterialColor.ClearMaterialInstance();
                    FadeInOutMaterialColor.Stop();
                }
            }

            if (FadeInOutMaterialFloat)
            {
                //如果运行模式不是外部指定的
                if (FadeInOutMaterialFloat.RunMode == EffectRunMode.OutSiedePointed)
                {
                    FadeInOutMaterialFloat.ClearMaterialInstance();
                    FadeInOutMaterialFloat.Stop();
                }
            }

            if (UVTextureAnimator)
            {
                //如果运行模式不是外部指定的
                if (UVTextureAnimator.RunMode == EffectRunMode.OutSiedePointed)
                {
                    UVTextureAnimator.ClearMaterialInstance();
                    UVTextureAnimator.Stop();
                }
            }

            if (UVScroll)
            {
                //如果运行模式不是外部指定的
                if (UVScroll.RunMode == EffectRunMode.OutSiedePointed)
                {
                    UVScroll.ClearMaterialInstance();
                    UVScroll.Stop();
                }
            }

            if (GradientColor)
            {
                //如果运行模式不是外部指定的
                if (GradientColor.RunMode == EffectRunMode.OutSiedePointed)
                {
                    GradientColor.ClearMaterialInstance();
                    GradientColor.Stop();
                }
            }
        }
Ejemplo n.º 2
0
        public override void OnInspectorGUI()
        {
            GUILayout.TextField("所有跟时间有关的变量小于0.03秒,等同于无效!");
            pa.ColorName = EditorGUILayout.TextField("属性名:", pa.ColorName);

            pa.Loop      = EditorGUILayout.Toggle("循环:", pa.Loop);
            pa.FadeAlpha = EditorGUILayout.Toggle("alpha:", pa.FadeAlpha);
            pa.FadeColor = EditorGUILayout.Toggle("颜色:", pa.FadeColor);

            GUI.enabled = !EditorApplication.isPlaying;
            pa.RunMode  = (EffectRunMode)EditorGUILayout.EnumPopup("运行方式:", pa.RunMode);
            if (pa.RunMode == EffectRunMode.Self)
            {
                pa.UseSharedMaterial = EditorGUILayout.Toggle("使用共享材质:", pa.UseSharedMaterial);
            }
            pa.valueMode = (ValueMode)EditorGUILayout.EnumPopup("运算方式:", pa.valueMode);
            GUI.enabled  = true;

            if (pa.valueMode == ValueMode.Constant)
            {
                ConstantUI();
            }
            else if (pa.valueMode == ValueMode.Curve)
            {
                CurveUI();
            }

            if (GUILayout.Button("Play"))
            {
                pa.Play();
            }
            if (GUILayout.Button("Stop"))
            {
                pa.Stop();
            }
        }
Ejemplo n.º 3
0
        void Finish()
        {
            if (!bInit)
            {
                return;
            }

            if (EffectNode.UseTestModel)
            {
                return;
            }

            if (matInstances.Count <= 0)
            {
                return;
            }


            //结束的时候,还原材质球
            foreach (Renderer r in m_Renders)
            {
                if (!r)
                {
                    continue;
                }
                //只还原第0个材质球
                if (OrginalmatMap.ContainsKey(r))
                {
                    Material[] mats = r.sharedMaterials;
                    EffectUtily.GabageRender(r, mats[0]);
                    mats[0]     = OrginalmatMap[r];
                    r.materials = mats;
                }
            }

            matInstances.Clear();

            //清空动画
            if (FadeInOutMaterialColor)
            {
                //如果运行模式不是外部指定的
                if (FadeInOutMaterialColor.RunMode == EffectRunMode.OutSiedePointed)
                {
                    FadeInOutMaterialColor.SetMaterialInstance(matInstances);
                    FadeInOutMaterialColor.Stop();
                }
            }

            if (FadeInOutMaterialFloat)
            {
                //如果运行模式不是外部指定的
                if (FadeInOutMaterialFloat.RunMode == EffectRunMode.OutSiedePointed)
                {
                    FadeInOutMaterialFloat.SetMaterialInstance(matInstances);
                    FadeInOutMaterialFloat.Stop();
                }
            }

            if (UVTextureAnimator)
            {
                //如果运行模式不是外部指定的
                if (UVTextureAnimator.RunMode == EffectRunMode.OutSiedePointed)
                {
                    UVTextureAnimator.SetMaterialInstance(matInstances);
                    UVTextureAnimator.Stop();
                }
            }

            if (UVScroll)
            {
                //如果运行模式不是外部指定的
                if (UVScroll.RunMode == EffectRunMode.OutSiedePointed)
                {
                    UVScroll.SetMaterialInstance(matInstances);
                    UVScroll.Stop();
                }
            }

            if (GradientColor)
            {
                //如果运行模式不是外部指定的
                if (GradientColor.RunMode == EffectRunMode.OutSiedePointed)
                {
                    GradientColor.SetMaterialInstance(matInstances);
                    GradientColor.Stop();
                }
            }
        }
Ejemplo n.º 4
0
        void Finish()
        {
            if (!bInit)
            {
                return;
            }

            if (EffectNode.UseTestModel)
            {
                return;
            }
            if (matInstances.Count <= 0)
            {
                return;
            }

            List <Material> TempList = new List <Material>();

            //结束的时候,清楚新增的材质球
            foreach (Renderer r in m_Renders)
            {
                if (!r)
                {
                    continue;
                }
                if (matInstancesMap.ContainsKey(r))
                {
                    TempList.Clear();
                    Material[] materials = r.sharedMaterials;
                    TempList.AddRange(r.sharedMaterials);
                    TempList.Remove(matInstancesMap[r]);
                    r.sharedMaterials = TempList.ToArray();

                    EffectUtily.GabageRender(r, matInstancesMap[r]);
                    var temp1 = matInstancesMap[r];
                    ResNode.DestroyRes(ref temp1);
                }
            }

            matInstances.Clear();
            matInstancesMap.Clear();

            //清空动画
            if (FadeInOutMaterialColor)
            {
                //如果运行模式不是外部指定的
                if (FadeInOutMaterialColor.RunMode == EffectRunMode.OutSiedePointed)
                {
                    FadeInOutMaterialColor.SetMaterialInstance(matInstances);
                    FadeInOutMaterialColor.Stop();
                }
            }

            if (FadeInOutMaterialFloat)
            {
                //如果运行模式不是外部指定的
                if (FadeInOutMaterialFloat.RunMode == EffectRunMode.OutSiedePointed)
                {
                    FadeInOutMaterialFloat.SetMaterialInstance(matInstances);
                    FadeInOutMaterialFloat.Stop();
                }
            }

            if (UVTextureAnimator)
            {
                //如果运行模式不是外部指定的
                if (UVTextureAnimator.RunMode == EffectRunMode.OutSiedePointed)
                {
                    UVTextureAnimator.SetMaterialInstance(matInstances);
                    UVTextureAnimator.Stop();
                }
            }

            if (UVScroll)
            {
                //如果运行模式不是外部指定的
                if (UVScroll.RunMode == EffectRunMode.OutSiedePointed)
                {
                    UVScroll.SetMaterialInstance(matInstances);
                    UVScroll.Stop();
                }
            }

            if (GradientColor)
            {
                //如果运行模式不是外部指定的
                if (GradientColor.RunMode == EffectRunMode.OutSiedePointed)
                {
                    GradientColor.SetMaterialInstance(matInstances);
                    GradientColor.Stop();
                }
            }
        }