[英]How can I change the parent of a GameObject instantiated via PrefabUtility.InstantiatePrefab?
[英]How can I change the properties of an instantiated gameObject in game?
在我的游戲中,我有一個gameObject
器,它多次實例化一個游戲對象(游戲就像一個跑步者)。 現在這個游戲對象有一個腳本,它有void Start()
並且在 void start 中它有一個gameObject
使游戲對象采用隨機顏色。 每次我運行游戲時,第一個預制件采用一種顏色(例如綠色),然后第二個預制件采用另一種顏色(例如紅色) - 但第一個 object 采用第二個顏色,就像它有 void start multiple次。 如何解決?
你可以有一個簡單的static
計數器,例如
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 []{
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 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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.