dynamically generate intermediate nodes

SalmaBend2003

New member
Joined
Jun 24, 2025
Messages
1
Programming Experience
Beginner
I'm trying to create a dynamic structure in Unity using prefab GameObjects and `LineRenderer`.

For now, I manually place the nodes and connect them using multiple LineRenderers (as shown in the script below), but this approach doesn't scale and is not flexible.

My goal is to:
1. Automatically generate intermediate nodes (subdivisions) between reference points.
2. Instantiate these nodes dynamically using a prefab.
3. Connect them with a single or multiple LineRenderers based on connectivity (like in a beam structure).
4. Ideally, base it on a structure definition similar to a connectivity matrix (like in FEM or structural mechanics).

Here’s a simplified version of my current manual setup (lots of duplicated code):
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
    public LineRenderer myLineRenderer;
    public LineRenderer myLineRenderer2;
    public LineRenderer myLineRenderer3;
    public LineRenderer myLineRenderer4;
    public LineRenderer myLineRenderer5;
    public LineRenderer myLineRenderer6;
    public LineRenderer myLineRenderer7;
    public LineRenderer myLineRenderer8;
    public LineRenderer myLineRenderer9;
    public LineRenderer myLineRenderer10;
    public LineRenderer myLineRenderer11;
    public LineRenderer myLineRenderer12;
    public GameObject firstObject;
    public GameObject secondObject;
    public GameObject thirdObject;
    public GameObject fourthObject;
    public GameObject fifthObject;
    public GameObject sixthObject;
    public GameObject seventhObject;
    public GameObject eighthObject;
    public GameObject ninthObject;
    public GameObject tenthObject;
    public GameObject eleventhObject;
    public GameObject twelfthObject;
    // Start is called before the first frame update
    void Start()
    {
        myLineRenderer.positionCount = 2;
        myLineRenderer2.positionCount = 2;
        myLineRenderer3.positionCount = 2;
        myLineRenderer4.positionCount = 2;
        myLineRenderer5.positionCount = 2;
        myLineRenderer6.positionCount = 2;
        myLineRenderer7.positionCount = 2;
        myLineRenderer8.positionCount = 2;
        myLineRenderer9.positionCount = 2;
        myLineRenderer10.positionCount = 2;
        myLineRenderer11.positionCount = 2;
        myLineRenderer12.positionCount = 2;
    }
    // Update is called once per frame
    void Update()
    {
        myLineRenderer.SetPosition(0, firstObject.transform.position);
        myLineRenderer.SetPosition(1, secondObject.transform.position);
        myLineRenderer2.SetPosition(0, secondObject.transform.position);
        myLineRenderer2.SetPosition(1, thirdObject.transform.position);
        myLineRenderer3.SetPosition(0, thirdObject.transform.position);
        myLineRenderer3.SetPosition(1, fourthObject.transform.position);
        myLineRenderer4.SetPosition(0, fourthObject.transform.position);
        myLineRenderer4.SetPosition(1, fifthObject.transform.position);
        myLineRenderer5.SetPosition(0, fifthObject.transform.position);
        myLineRenderer5.SetPosition(1, sixthObject.transform.position);
        myLineRenderer6.SetPosition(0, sixthObject.transform.position);
        myLineRenderer6.SetPosition(1, seventhObject.transform.position);
        myLineRenderer7.SetPosition(0, seventhObject.transform.position);
        myLineRenderer7.SetPosition(1, eighthObject.transform.position);
        myLineRenderer8.SetPosition(0, eighthObject.transform.position);
        myLineRenderer8.SetPosition(1, ninthObject.transform.position);
        myLineRenderer9.SetPosition(0, ninthObject.transform.position);
        myLineRenderer9.SetPosition(1, tenthObject.transform.position);
        myLineRenderer10.SetPosition(0, tenthObject.transform.position);
        myLineRenderer10.SetPosition(1, eleventhObject.transform.position);
        myLineRenderer11.SetPosition(0, eleventhObject.transform.position);
        myLineRenderer11.SetPosition(1, twelfthObject.transform.position);
        myLineRenderer12.SetPosition(0, twelfthObject.transform.position);
        myLineRenderer12.SetPosition(1, firstObject.transform.position);
    }
}
 
Last edited by a moderator:
When you start naming variables with number suffixes, it is often a code smell than indicates that you should be using arrays (or lists). When you start copying and pasting code, it is a code smell that you likely need loops and/or helper functions.
 
Anyway, what you seem to be trying to do above looks like what is called a "mesh" in game programming. Since Unity is a framework primarily geared towards game programming, there is a very high probability that it already implements a class that supports meshes.
 
Back
Top Bottom