| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | using System;using System.Collections;using System.Collections.Generic;using UnityEngine;public class WaterRangeCtrlTool : MonoBehaviour{    public static WaterRangeCtrlTool _Instance;    public GameObject[] FxObjects;    public Material waterRangeMat;    public Transform hemian;    public AnimationCurve waterCurveSZ;    public AnimationCurve waterCurveVZ;    public AnimationCurve waterCurve_65000;    public AnimationCurve waterCurve_70000;    public Action<float> onCtrlChange;    public int waterCurveIndex    {        private set;        get;    }    private void Awake()    {        _Instance = this;        FxObjects = new GameObject[this.transform.childCount];        for (int i = 0; i < FxObjects.Length; i++)        {            FxObjects[i] = this.gameObject.transform.GetChild(i).gameObject;            //FxObjects[i].SetActive(true);        }        waterRangeMat = this.transform.Find("NeiHe_FenQu").GetComponent<MeshRenderer>().material;        hemian = this.transform.Find("HeMianTrans");        ChangeWaterCurve(0);    }    public void ShowFx(bool reSetValue)    {        if (reSetValue)        {            SetRangeValue(0);        }        for (int i = 0; i < FxObjects.Length; i++)        {            FxObjects[i].SetActive(true);        }        hemian.transform.localPosition = Vector3.forward * 35;    }    public void HideFx()    {        waterRangeMat.SetFloat("_ClipLength", 1);        if (hemian != null)            hemian.transform.localPosition = Vector3.zero;        for (int i = 0; i < FxObjects.Length; i++)        {            FxObjects[i].SetActive(false);        }    }    public void SetRangeValue(float value)    {        //Debug.Log(value);        float rangeValue = 0;        switch (waterCurveIndex)        {            case 0:                rangeValue = waterCurve_65000.Evaluate(value);                break;            case 1:                rangeValue = waterCurve_70000.Evaluate(value);                break;        }        //Debug.Log(rangeValue);        waterRangeMat.SetFloat("_ClipLength", rangeValue);        onCtrlChange?.Invoke(rangeValue);    }    public void ChangeWaterCurve(int index)    {        waterCurveIndex = index;    }}
 |