如何使用 C# 在运行时在 Unity (2D) 中创建随机游戏对象?
How do I create random game objects at runtime in Unity (2D) using C#?
我是初学者,没有任何 Unity 经验。我一直在阅读教程和观看视频,但似乎找不到我要找的东西。
如何使用每隔几秒更改一次的随机对象创建 3x3 网格?
例如:
Click this to see what the grid looks like and how it should look after a few seconds
从空游戏对象制作一个变换数组并将它们放置在您的平面中(它可以是您从顶部看它的立方体)然后使用 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;
}
}
}
1) 创建一个 public 变量并在检查器中将要创建的对象(项目面板中的预制件)分配给它(在将脚本拖到对象上之后)
例如
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
我是初学者,没有任何 Unity 经验。我一直在阅读教程和观看视频,但似乎找不到我要找的东西。
如何使用每隔几秒更改一次的随机对象创建 3x3 网格?
例如:
Click this to see what the grid looks like and how it should look after a few seconds
从空游戏对象制作一个变换数组并将它们放置在您的平面中(它可以是您从顶部看它的立方体)然后使用 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;
}
}
}
1) 创建一个 public 变量并在检查器中将要创建的对象(项目面板中的预制件)分配给它(在将脚本拖到对象上之后)
例如
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