bool DrawAni(CameraAni ani, int idx) { bool isShow; bool isClick; EditorUtil.DrawHeaderBtn("渐变" + CameraAni.TypeName[(int)ani.m_type] + " " + idx, "删除", out isShow, out isClick); if (isClick) { return(true); } if (!isShow) { return(false); } using (new AutoContent()) { using (new AutoEditorIndentLevel()) { ani.m_type = (CameraAni.enType)EditorGUILayout.Popup("类型", (int)ani.m_type, CameraAni.TypeName); ani.m_fieldName = EditorGUILayout.TextField("字段名", ani.m_fieldName); if (ani.m_type == CameraAni.enType.Color) { ani.m_beginColor = EditorGUILayout.ColorField("开始", ani.m_beginColor); ani.m_endColor = EditorGUILayout.ColorField("结束", ani.m_endColor); } else if (ani.m_type == CameraAni.enType.Float) { ani.m_beginFloat = EditorGUILayout.FloatField("开始", ani.m_beginFloat); ani.m_endFloat = EditorGUILayout.FloatField("结束", ani.m_endFloat); } else { Debuger.LogError("未知的类型{0}", ani.m_type); } ani.m_beginDuration = EditorGUILayout.FloatField("开始渐变时间", ani.m_beginDuration); ani.m_beginCurve = UnityEditor.EditorGUILayout.CurveField("开始曲线", ani.m_beginCurve, GUILayout.Width(175), GUILayout.Height(30f)); ani.m_endDuration = EditorGUILayout.FloatField("结束渐变时间", ani.m_endDuration); ani.m_endCurve = UnityEditor.EditorGUILayout.CurveField("结束曲线", ani.m_endCurve, GUILayout.Width(175), GUILayout.Height(30f)); } } return(false); }
public void PlayRadialBlur(float strength, Transform t, float duration, Vector3 offset, float beginSmooth, float endSmooth) { GameObject go = GameObjectPool.GetPool(GameObjectPool.enPool.Fx).GetImmediately("fx_camera_blur_internal", false); CameraFx cameraFx = go.GetComponent <CameraFx>(); CameraAni cameraAni = cameraFx.m_anis[0]; cameraAni.m_endFloat = strength; cameraAni.m_beginDuration = beginSmooth; cameraAni.m_endDuration = endSmooth; RadialBlur blur = go.GetComponent <RadialBlur>(); blur.target = t; blur.offset = offset; go.SetActive(true); FxDestroy.Add(go, duration); }
bool IngorePoolDestroy() { float maxEndDuration = 0; for (int i = 0; i < m_anis.Count; ++i) { CameraAni a = m_anis[i]; if (a.m_endDuration > maxEndDuration) { maxEndDuration = a.m_endDuration; a.OnEnd(); } } if (maxEndDuration == 0) { return(false);//不需要延迟销毁 } m_destroyTime = Util.time + maxEndDuration; //this.transform.parent = null; return(true); }
public override void OnInspectorGUI() { //base.OnInspectorGUI(); CameraFx fx = target as CameraFx; EditorGUI.BeginChangeCheck(); CameraAni removeAni = null; for (int i = 0; i < fx.m_anis.Count; ++i) { if (DrawAni(fx.m_anis[i], i)) { removeAni = fx.m_anis[i]; } } if (removeAni != null) { fx.m_anis.Remove(removeAni); } int idx = UnityEditor.EditorGUILayout.Popup("添加渐变", -1, CameraAni.TypeName); if (idx != -1) { CameraAni ani = new CameraAni(); ani.m_type = (CameraAni.enType)idx; fx.m_anis.Add(ani); } if (EditorGUI.EndChangeCheck()) { //Debuger.Log("修改"); EditorUtil.SetDirty(fx); } }