using System.Collections; using System.Collections.Generic; using Ichni; using Ichni.RhythmGame; using UnityEngine; using UnityEngine.UI; public class EventPoint : MonoBehaviour { public AnimatedFloat animatedFloat; public EventPoint LastEventPoint; public EventPoint NextEventPoint; public Image EvDrawimage; public Image OvDrawimage; public RectTransform LeftSide; public RectTransform RightSide; public Button selectButton; public RawImage CurveCanvas; public RawImage CurveCanvas2; public FlexibleFloatTab FatherTab; public int BeatDeviver => FatherTab.BeatDeviver; public void Initialize(AnimatedFloat animatedFloat) { this.animatedFloat = animatedFloat; transform.localPosition = new Vector3( animatedFloat.startTime / EditorManager.instance.timeline.timePerBeat * BeatDeviver, 0, 0 ); RightSide.localPosition = new Vector3( (animatedFloat.endTime - animatedFloat.startTime) / EditorManager.instance.timeline.timePerBeat * BeatDeviver, 0, 0); EvDrawimage.rectTransform.sizeDelta = new Vector2(RightSide.localPosition.x - LeftSide.localPosition.x, EvDrawimage.rectTransform.sizeDelta.y); EvDrawimage.transform.localPosition = new Vector3(EvDrawimage.rectTransform.sizeDelta.x / 2, 0, 0); OvDrawimage.transform.localPosition = RightSide.localPosition; CurveCanvas.transform.localPosition = EvDrawimage.transform.localPosition; CurveCanvas.rectTransform.sizeDelta = new Vector2(EvDrawimage.rectTransform.sizeDelta.x, EvDrawimage.rectTransform.sizeDelta.y + 50); //记得 CurveCanvas2.rectTransform.sizeDelta = new Vector2(NextEventPoint.transform.localPosition.x - RightSide.sizeDelta.x, EvDrawimage.rectTransform.sizeDelta.y + 50); ReDraw(FatherTab.scalevalue); } public void ReDraw(float value) { Texture2D Texture = new Texture2D((int)CurveCanvas.rectTransform.sizeDelta.x / 5, (int)CurveCanvas.rectTransform.sizeDelta.y / 5); for (int i = 0; i < Texture.width; i++) { for (int j = 0; j < Texture.height; j++) { Texture.SetPixel(i, j, new Color(0, 0, 0, 0)); } } Texture.Apply(); for (int i = 0; i < Texture.width; i++) { float t = (float)i / Texture.width; Texture.SetPixel(i, (int)( (Texture.height / 2) + ((animatedFloat.endValue - animatedFloat.startValue) * AnimationCurveEvaluator.Evaluate(animatedFloat.animationCurveType, t) * value) ), Color.green);//丑陋 } Texture.Apply(); CurveCanvas.texture = Texture; } }