我是一个没有Unity经验的初学者。我一直在阅读教程和看视频,但似乎无法找到我要找的东西。如何在运行时使用C#在Unity(2D)中创建随机游戏对象?
如何创建一个每隔几秒更改一次的随机对象的3x3网格?
例如:
Click this to see what the grid looks like and how it should look after a few seconds
我是一个没有Unity经验的初学者。我一直在阅读教程和看视频,但似乎无法找到我要找的东西。如何在运行时使用C#在Unity(2D)中创建随机游戏对象?
如何创建一个每隔几秒更改一次的随机对象的3x3网格?
例如:
Click this to see what the grid looks like and how it should look after a few seconds
1)做一个公共变量,并指定日e)要在检查器中创建的对象(来自项目面板的预制件)(将脚本拖动到对象上后) public GameObject variable_name
2)继续这样做,所有你使用的是不同的对象(如果你有大量的我会建议使用的列表)
3)创建一个迭代结构,例如一个for循环,每使用一个随机数发生器(所有方块在1和9之间),例如2秒就被称为 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
使从空的游戏物体变换的阵列,并将它们置于你的飞机(也可以是你看它从顶部的立方体),然后使用Coroutine
调用方法每X秒和随机您可以使用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;
}
}
}
谢谢!很有帮助。特别是Coroutine的东西。 :) – jeanl