今天写了一个实时画曲线的功能,主要是想用于显示车辆的100公里加速,这里指写了一个测试还没能和主程序关联上
using UnityEngine; using System.Collections; using System; using System.Collections.Generic; public class CurveTest : MonoBehaviour { public Material material; private float _speed=0; private float _timeA=0; private float _timeB=0; private bool _isPlay=false; private LineRenderer lineRenderer; //定义一个Vector3,用来存储鼠标点击的位置 private Vector3 position; //用来索引端点 private int index = 0; //端点数 private int LengthOfLineRenderer=0; //private float[] _arrSpeed; private ArrayList _arrSpeed=new ArrayList(); private int _speedIndex; // Use this for initialization void Start(){ InvokeRepeating("OnTimer", 1, 0.1f); //添加LineRenderer组件 lineRenderer = gameObject.AddComponent<LineRenderer>(); //设置材质 lineRenderer.material = material; //设置颜色 lineRenderer.SetColors(Color.red, Color.yellow); //设置宽度 lineRenderer.SetWidth(0.5f, 0.5f); } // Update is called once per frame void Update () { lineRenderer = GetComponent<LineRenderer>(); if(Time.timeScale==1){ if(Input.GetKey(KeyCode.W)){ _speed+=(110-_speed)/200; _isPlay=true; }else{ _speed-=0.1f; } if(_speed<0){ _speed=0; }else if(_speed>100){ _speed=100; _isPlay=false; Time.timeScale=0; OnEnd(); } if(_isPlay){ _timeA = (_timeA+Time.deltaTime); _timeB=(Mathf.CeilToInt (_timeA)); } } } void OnGUI(){ GUILayout.Label(""+_speed); GUILayout.Label(""+_timeB); } void OnTimer(){ if(Mathf.CeilToInt(_speed)>0){ _arrSpeed.Add(Mathf.CeilToInt(_speed)); _speedIndex+=1; position=new Vector3(_speedIndex,_speed/2,0); //端点数+1 LengthOfLineRenderer++; //设置线段的端点数 lineRenderer.SetVertexCount(LengthOfLineRenderer); while (index < LengthOfLineRenderer) { //两点确定一条直线,所以我们依次绘制点就可以形成线段了 lineRenderer.SetPosition(index, position); index++; } } } void OnEnd(){ foreach(object o in _arrSpeed) { Debug.Log(o); gameObject.AddComponent ("SimpleCurve"); } } }