C# 如何在游戏中更改实例化游戏对象的属性?
在我的游戏中,我有一个产卵器,它多次实例化一个C# 如何在游戏中更改实例化游戏对象的属性?,c#,unity3d,C#,Unity3d,在我的游戏中,我有一个产卵器,它多次实例化一个游戏对象(游戏就像一个跑步者)。现在这个gameObject有一个脚本,它有void Start(),在void Start中它有一个函数,使游戏对象采用随机颜色。每次我运行游戏时,第一个预制件采用一种颜色(如绿色),然后第二个预制件采用另一种颜色(如红色)-但第一个对象采用第二个对象的颜色,就像它多次启动空一样。如何解决这个问题?您可以使用一个简单的静态计数器,例如 private static Color[] colors = new []{
游戏对象
(游戏就像一个跑步者)。现在这个gameObject
有一个脚本,它有void Start()
,在void Start中它有一个函数,使游戏对象采用随机颜色。每次我运行游戏时,第一个预制件采用一种颜色(如绿色),然后第二个预制件采用另一种颜色(如红色)-但第一个对象采用第二个对象的颜色,就像它多次启动空一样。如何解决这个问题?您可以使用一个简单的静态计数器,例如
private static Color[] colors = new []{
Color.green,
Color.red,
Color.blue,
Color.yellow,
Color.black
};
private static int index = 0;
private void Start()
{
if(index => colors.Length)
{
Debug.LogError("Not enough colors!", this);
return;
}
GetComponent<Renderer>().material.color = colors[index];
index++;
}
private static Color[]colors=new[]{
颜色,绿色,
颜色,红色,
颜色,蓝色,
颜色,黄色,
颜色:黑色
};
私有静态int索引=0;
私有void Start()
{
如果(索引=>colors.Length)
{
LogError(“没有足够的颜色!”,这);
回来
}
GetComponent().material.color=颜色[索引];
索引++;
}
或者,如果你希望它是随机的,就像你说的那样
private static Color[] colors = new []{
Color.green,
Color.red,
Color.blue,
Color.yellow,
Color.black
};
private static int index = 0;
private void Start()
{
if(index => colors.Length)
{
Debug.LogError("Not enough colors!", this);
return;
}
if(index == 0)
{
// the first time shuffle up the array
var rnd = new Random();
colors = colors.OrderBy((c) => rnd.Next()).ToArray();
}
GetComponent<Renderer>().material.color = colors[index];
index++;
}
private static Color[]colors=new[]{
颜色,绿色,
颜色,红色,
颜色,蓝色,
颜色,黄色,
颜色:黑色
};
私有静态int索引=0;
私有void Start()
{
如果(索引=>colors.Length)
{
LogError(“没有足够的颜色!”,这);
回来
}
如果(索引==0)
{
//第一次洗牌数组
var rnd=新随机数();
colors=colors.OrderBy((c)=>rnd.Next()).ToArray();
}
GetComponent().material.color=颜色[索引];
索引++;
}
或者,如果你真的希望它完全随机,你可以简单地做(可能有多个“相等”或非常相似的结果)
private void Start()
{
GetComponent().material.color=GetCompletelyRandomColor();
}
私有静态颜色GetCompletelyRandomColor()
{
var r=随机范围(0f,1f);
var g=随机范围(0f,1f);
var b=随机范围(0f,1f);
返回新颜色(r、g、b);
}
请提供一些代码示例,并尝试以更易读的方式设置问题的格式。
private void Start()
{
GetComponent<Renderer>().material.color = GetCompletelyRandomColor();
}
private static Color GetCompletelyRandomColor()
{
var r = Random.Range(0f, 1f);
var g = Random.Range(0f, 1f);
var b = Random.Range(0f, 1f);
return new Color(r, g, b);
}