saz*_*azr 1 c# unity-game-engine
我试图在运行时创建LineRenderers(当用户按下按钮时).
我的问题:我永远不能创建多个LineRenderer.当我去创建第二个时,LineRenderer对象始终为NULL.
我究竟做错了什么?您能否就创建多个LineRenderer需要做些什么提供建议?
public class AppInit : MonoBehaviour {
public Vector3[] TEST_VERTICES;
public const int SPEED = 5;
public List<LineRenderer> lines;
// Use this for initialization
void Start () {
TEST_VERTICES = new Vector3[10] {new Vector3(0,0,0), new Vector3(10,10,10), new Vector3(30,10,50), new Vector3(30,40,50),
new Vector3(10,30,90), new Vector3(10,20,40), new Vector3(50,20,40), new Vector3(70,80,90),
new Vector3(10,70,20), new Vector3(60,10,0)};
lines = new List<LineRenderer>();
}
// Update is called once per frame
void Update () {
float x = Input.GetAxis ("Horizontal") * Time.deltaTime * SPEED;
float z = 0;
float y = Input.GetAxis ("Vertical") * Time.deltaTime * SPEED;
gameObject.transform.Translate (new Vector3(x,y,z));
}
void OnGUI() {
if (GUI.Button (new Rect(10,10,100,20), "Create"))
createString(TEST_VERTICES);
}
public bool createString( Vector3[] vertices ) {
LineRenderer lRend = gameObject.AddComponent ("LineRenderer") as LineRenderer;
//LineRenderer lRend = new LineRenderer();
lines.Add(lRend);
Debug.Log ("IS NULL"+(lRend == null).ToString ());
lRend.SetColors (new Color(100,0,0,100), new Color(0,0,100,100));
lRend.SetWidth(10, 1);
lRend.SetVertexCount(vertices.Length);
for (int i=0; i<vertices.Length; i++)
lRend.SetPosition(i, vertices[i]);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
正如Iridium指出的那样,您只能将每种类型的一个组件添加到游戏对象中.所以你想为每个新的linerenderer创建一个新的游戏对象.这里做到这一点的简单方法是改变:
LineRenderer lRend = gameObject.AddComponent("LineRenderer") as LineRenderer;
Run Code Online (Sandbox Code Playgroud)
至:
LineRenderer lRend = new GameObject().AddComponent("LineRenderer") as LineRenderer;
Run Code Online (Sandbox Code Playgroud)
然后,如果您需要稍后访问linerenderer的gameobject,您可以通过lRend.gameObject执行此操作.或者行[index] .gameObject.
| 归档时间: |
|
| 查看次数: |
4436 次 |
| 最近记录: |