unity3d c#脚本的问题!!!

这是我的上一个问题,http://zhidao.baidu.com/question/455531999556102565.html,结果脚本改完之后还无法正常运行。这是我修改后的脚本。
using UnityEngine; using UnityEngine;
using System.Collections;
public class LineShoot : MonoBehaviour {
private LineRenderer lineRenderer;
private Vector3 Fposition;
private Vector3 Sposition;
private GameObject obj;
private float t = 4.0F;
void Start()
{
lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
lineRenderer.SetColors(Color.red, Color.yellow);
lineRenderer.SetWidth(0.01f, 0.01f);
StartCoroutine(draw(4.0F));
}

void Update()
{
draw (t);
}

IEnumerator draw(float waitTime)
{
lineRenderer = GetComponent<LineRenderer>();

if (Input.GetMouseButtonDown(0))
{
lineRenderer.SetVertexCount(2);
obj = GameObject.Find("gGUN03h");

Fposition = obj.transform.position;
lineRenderer.SetPosition(0,Fposition);
Sposition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y,1.0f));
lineRenderer.SetPosition(1,Sposition);
yield return new WaitForSeconds(waitTime);
//lineRenderer.SetVertexCount(1);
}
}
void OnGUI()
{
GUILayout.Label("当前鼠标X轴位置:" + Input.mousePosition.x);
GUILayout.Label("当前鼠标Y轴位置:" + Input.mousePosition.y);
}

}

功能就是画线之后,过一段时间让线消失。但还是没有成功。希望大神继续帮忙解答!

1.你要想使用协程,那么必须用StartCoroutine来启动协程,该例子中是

void Update () 
{
    StartCoroutine(draw(t));
}

2.这样你就会发现每一帧都启动一个协程,那么假如游戏是60fps的,那么你10秒之后就会发现有600个draw函数在同时运行啦^_^,解决的办法是放到Start函数中:

void Start ()
{
    StartCoroutine(draw(t));
}

然后删掉你现在的Update函数。

追问

谢谢你!如果我删掉了update()函数,那么draw()函数也会每一帧都启动一次么?

温馨提示:答案为网友推荐,仅供参考
相似回答