我是一名没有任何Unity经验的初学者。我一直在阅读教程和观看视频,但似乎无法找到我正在寻找的东西。
如何使用每隔几秒钟更改一次的随机对象创建3x3网格?
例如:
Click this to see what the grid looks like and how it should look after a few seconds
答案 0 :(得分:1)
1)创建一个公共变量并在检查器中将要创建的对象(来自项目面板的预制件)分配给它(在将脚本拖到对象上之后)
例如
public GameObject variable_name
2)对你正在使用的所有不同对象继续这样做(如果你有大量我建议使用列表)
3)创建一个迭代结构,例如一个for循环,每隔2秒调用一次,使用随机数生成器(对于所有方块,在1到9之间),例如
Random rnd = new Random();
int square_position = rnd.Next(1, 9);
4)使用函数Instantiate()
在该位置生成对象
例如
Instantiate(GameObect_variable_name)
并使用转换函数将其移动到正确的位置
如需进一步阅读,我建议:
http://docs.unity3d.com/Manual/CreateDestroyObjects.html http://docs.unity3d.com/ScriptReference/Transform.html
答案 1 :(得分:0)
从空游戏对象制作一系列变换并将它们放在你的平面上(它可以是你从顶部看它的立方体)然后每隔X秒使用Coroutine
调用一个方法,你可以随机化使用Fisher Yates shuffle
随机化您的生成点中的顺序,然后将它们分配给您的游戏对象
public class game{
public GameObject[] points;
public GameObject[] objs;
void Start()
{
StartCoroutine(YourFunctionName());
}
IEnumerator YourFunctionName()
{
while(true)
{
randomPlacer();
yield return new WaitForSeconds(3);
}
}
void randomPlacer()
{
RandomizeArray();
//assign all new positions to your objects
}
public void RandomizeArray(GameObject[] arr)
{
for (var i = arr.length - 1; i > 0; i--) {
var r = Random.Range(0,i);
var tmp = arr[i];
arr[i] = arr[r];
arr[r] = tmp;
}
}
}