我試圖創建一個腳本,我可以生成不同類型的對象菌種不同類型的對象
回答
從您的描述和評論聽起來是什麼,你要保證speiclaCratePercentageMin
和speiclaCratePercentageMax
之間的百分比是特殊的創造,但其餘可以只是一個正常的創建。如果這是你所需要做的就是弄清楚這個百分比將會佔總數的多少,首先產生許多箱子,然後用普通箱子填充剩下的箱子。
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;
public class spawnmanager : MonoBehaviour {
public int noOfobjects = 6;
public Transform[] spawnPoints;
public GameObject normalCrate;
public GameObject specialCrate;
public float speiclaCratePercentageMin;
public float speiclaCratePercentageMax;
void Awake()
{
}
// Use this for initialization
void Start()
{
spawner();
}
void spawner()
{
List<Transform> availablePoints = new List<Transform>(spawnPoints);
//Figures out how many special creates we need.
int numberOfSpecialCrates = noOfobjects * Random.Range(this.speiclaCratePercentageMin, this.speiclaCratePercentageMax);
//Added i<spawnPoints.Length check to prevent errors when noOfobjects is bigger than the number of available spawn points.
for (int i = 0; i<noOfobjects && i<spawnPoints.Length;i++)
{
int spawnPointIndex = Random.Range (0, availablePoints.Count);
//As long as i is lower than numberOfSpecialCrates we spawn a special crate.
if(i < numberOfSpecialCrates)
{
Debug.Log("dd");
Instantiate(specialCrate, availablePoints[spawnPointIndex].position, Quaternion.identity);
}
else
{
Instantiate(normalCrate, availablePoints[spawnPointIndex].position, Quaternion.identity) ;
}
availablePoints.RemoveAt(spawnPointIndex);
}
}
}
太棒了!它解決了這個問題:)現在,如果他們被摧毀,我該如何跟蹤障礙物?例如,如果場景中只有2個障礙物,我想更多地產生,如果你知道的話,請與我分享你的信息,如果不是的話,非常感謝:) – John
@Groude標記所有具有相同標記的物體,然後使用函數[搜索標籤中的對象](https://docs.unity3d.com/ScriptReference/GameObject.FindGameObjectsWithTag.html),當你有更少的產卵。 –
您也可以使用存儲對象所有實例的列表。 (或者兩個,如果這樣可以更容易地檢查當前存在多少個罕見的問題) –
退房this SO想法的問題。這似乎是你在找什麼。
鏈接只有答案是不鼓勵,即使其他SO問題。要麼這個問題是不同的,這個問題應該是它自己的答案的完整版本,否則他們是相似的,你應該投票將它作爲一個副本關閉。 –
- 1. 兩種不同的參數類型(強制對象到類型)
- 2. 3種不同類型的JavaScript對象,有什麼不同?
- 3. 菌種功能
- 4. 不同類型對象
- 5. 不同類型的同一個對象
- 6. 兩種不同對象類型的多維數組
- 7. RhinoAutoMocker:爲某種類型生成不同的對象
- 8. 如何在TypeScript中區分兩種不同的對象類型?
- 9. 使用2種不同的對象類型列表
- 10. scala中如何比較兩種不同類型的對象?
- 11. 如何在一個對象中合併兩種不同的對象類型?
- 12. 菌種和蟒蛇
- 13. 兩種不同類型的
- 14. 將一種類型的對象分配給另一種類型
- 15. 菌種對節點JS(Windows Server 2012中)
- 16. 兩種不同的對象類型作爲參數,返回一個類型的對象
- 17. 合併不同類型的對象
- 18. 複製不同類型的對象
- 19. 不同類型的Java通用對象。
- 20. 不同類型的對象傳遞
- 21. C# - 不同類型的對象列表
- 22. HackLang類型不同的對象
- 23. 不同類型對象的比較
- 24. 不同類型的Cast對象
- 25. 不支持每種類型的多個對象集。對象集IdentityUsers'and用戶可以同時包含類型
- 26. 兩種不同類型
- 27. 不同的名稱相同類型的不同對象
- 28. 將1類型的對象轉移到不同類型的對象
- 29. acts_as_votable:對同一對象有兩種投票類型
- 30. Siddhi對「對象」屬性類型支持哪種類型的對象?
是否要保證10個對象中的2個是一種類型還是您正在尋找純粹的機會?我可能會實現這個作爲枚舉數返回對象類型/實例化對象 – Charleh
我想保證即使只有一個它會產生對象2號。我只需要被產生。因爲它有一種特殊的能力,對象1號正常。 – John
你可能想按照你需要的比例將對象添加到列表中,我會選擇一個比例,比如說2:8,然後是一個數字,比如10,20等,將項目的數量添加到按指定的比例列表,然後從列表中隨機選取項目,在挑選項目時將其刪除 – Charleh