我写简单的亚军游戏。
我有游戏对象(四元组)。
我希望它能够生成。
我写了spawnscript:
using UnityEngine;
using System.Collections;
public class SpawnScript : MonoBehaviour {
public GameObject[] obj;
//public GameObject obj;
public float spawnMin = 1f;
public float spawnMax = 2f;
// Use this for initialization
void Start () {
Spawn();
}
void Spawn()
{
//for (int i = 0; i < 10; i++)
// Instantiate(obj, new Vector3(i * 2.0f, 0, 0), Quaternion.identity);
Instantiate(obj[Random.Range(0, obj.GetLength(0))], transform.position, Quaternion.identity);
Invoke("Spawn", Random.Range(spawnMin, spawnMax));
}
}
但是我的四次产卵了。我需要多次产卵。
我的问题在哪里?
答案 0 :(得分:1)
在开始活动
中使用 InvokeRpeating 代替调用// Invokes the method methodName in time seconds, then repeatedly every repeatRate seconds.
InvokeRepeating("Spawn", 3, 3);
如果你执行InvokeRepeating(&#34; Function&#34;,1.0f,1.0f),它将在InvokeRepeating调用之后一秒钟调用Function,然后每隔一秒调用一次。 因此,您可以控制生成时间。
<强>更新强> 在评论中提到:
您也可以通过调用以下代码随时取消InvokeRepeating。 For more
CancelInvoke("Spawn");
答案 1 :(得分:0)
代码没有问题。所有GameObjects都实例化了相同的位置,因此您可以使用以下代码:
<html lang="en">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test</title><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script><script>
$(document).ready(function() {
$('#stepText').html("\r\n <p>\r\n Some text goes here with html tags like\r\n <span class=\"classname\">more text</span> and\r\n custom tags <a href=\"#\" onclick=\"doSomething(1, 'value'); return false;\">\r\n and\r\n text\r\n </a>\r\n </p>\r\n ");
});
</script><script>
function doSomething(n, id) {
alert(n + ': ' + id);
}
</script></head>
<body>
<div id="stepText"></div>
</body>
</html>
只能移动X轴上的位置,你可以移动它x,y,z。
另外
您可以使用随机函数移动生成位置
public float spawnDistanceFactor = 2f; //Value is your choice. You can change it.
void Spawn()
{
float startPosX = 0f; // I assume your camera look at 0,0,0 point.
for (int i = 0; i < 10; i++){
Vector3 spawnPos = new Vector3(startPosX,0f,0f);
Instantiate(obj, spawnPos, Quaternion.identity);
startPosX+=spawnDistanceFactor;
}
}
你可以做很多事情。
对于销毁预制件,您可以将Destroy脚本添加到对象(您应该使用脚本创建预制件),例如:
public float randomMin = 2f;
public float randomMax = 4f;
void Spawn()
{
float startPosX = 0f; // I assume your camera look at 0,0,0 point.
for (int i = 0; i < 10; i++){
Vector3 spawnPos = new Vector3(startPosX,0f,0f);
Instantiate(obj, spawnPos, Quaternion.identity);
float randomX = Random.Range(randomMin,randomMax);
startPosX+=randomX;
}
}
或使用list来保存指向GameObjects的指针。像:
void DestroyObject(){
Destroy(this.gameObject);
}