Сначала сделайте что-нибудь простое, сделайте это линейным.
Первый подход:
public GameObject target;
public int n=50;
void Awake(){
for(int i=0;i<n;i++)
{
GameObject tem=Instantite(target,new Vector3(i,0,0),Quanterion.Identity);
if(i/7==0)
{
tem.GetComponent<MeshRenderer>().material.color=Color.violate;
}
else if(i/7==1)
{
tem.GetComponent<MeshRenderer>().material.color=Color.blue;
}
else if(i/7==2)
{
tem.GetComponent<MeshRenderer>().material.color=Color.indigo;
}
if(i/7==3)
{
tem.GetComponent<MeshRenderer>().material.color=Color.green;
}
if(i/7==4)
{
tem.GetComponent<MeshRenderer>().material.color=Color.yellow;
}
if(i/7==5)
{
tem.GetComponent<MeshRenderer>().material.color=Color.orange;
}
if(i/7==6)
{
tem.GetComponent<MeshRenderer>().material.color=Color.red;
}
}
}
Это даст нам линейную полосу.
Теперь последний.// Также дает форму радуги, может быть, вы не спросили
public GameObject target;
public int n=50;
public int r=50;//try adjusting this one, this value can also be achieved doing some calculation but I forgot them
void Awake() {
float deg=0;
for(int i=0;i<n;i++)
{
if(i!=0)
deg=360/(float)i;
GameObject tem=Instantite(target,Vector3(r*Mathf.Deg2Rad*cos(deg)/2, r*Mathf.Deg2Rad*sin(deg)/2,0),Quanterion.Identity);
if(i/7==0)
{
tem.GetComponent<MeshRenderer>().material.color=Color.violate;
}
else if(i/7==1)
{
tem.GetComponent<MeshRenderer>().material.color=Color.blue;
}
else if(i/7==2)
{
tem.GetComponent<MeshRenderer>().material.color=Color.indigo;
}
if(i/7==3)
{
tem.GetComponent<MeshRenderer>().material.color=Color.green;
}
if(i/7==4)
{
tem.GetComponent<MeshRenderer>().material.color=Color.yellow;
}
if(i/7==5)
{
tem.GetComponent<MeshRenderer>().material.color=Color.orange;
}
if(i/7==6)
{
tem.GetComponent<MeshRenderer>().material.color=Color.red;
}
}
}