即时创建游戏,玩家需要找到并获取一定数量的密钥。目前我有一个生成容器,在给定的位置生成5个键。我希望能够在5个随机位置生成5个密钥。所以,假设我有10个生成点,我希望它随机选择5个点中的任意一个并在那里放置一个键。
到目前为止我有以下代码
using UnityEngine;
using System.Collections;
public class KeySpawnManager : MonoBehaviour
{
// array to store spawnpoints
private Transform[] spawnTransformList;
// integer to store number of spawnpoints
private int numberOfSpawnpoints;
// the prefab we're going to spawn
public GameObject prefab;
private int collectedCount = 0;
private int currentTime = 0;
// Singleton Instance
public static KeySpawnManager Instance { get; private set; }
// AWAKE Function - fired on initialization
void Awake ()
{
if (Instance == null) Instance = this;
else Destroy( gameObject );
numberOfSpawnpoints = transform.childCount;
spawnTransformList = new Transform[numberOfSpawnpoints];
for (int i = 0; i < numberOfSpawnpoints; i++)
{
// add the spawn to the array
spawnTransformList[i] = transform.GetChild(i); // return transform Component of each child object
}
for (int j = 0; j < numberOfSpawnpoints; j++)
{
GameObject newPrefab = (GameObject) Instantiate(prefab, spawnTransformList[j].position, spawnTransformList[j].rotation);
newPrefab.transform.parent = transform.position;
}
}
}
关于如何做到这一点的任何想法? 感谢
答案 0 :(得分:2)
在列表中创建十个空的游戏对象然后使用 Fisher-Yates shuffle 对列表进行洗牌,然后使用列表的前五个元素并在其中生成键
Here是c#
中Fisher-Yates shuffle的实现答案 1 :(得分:0)
使用随机类创建一个随机方法,您可以传递生成点的总数。让它返回你的产卵位置的索引。