产生游戏对象统一(C#)

时间:2016-03-28 06:40:18

标签: c# android unity3d

我写简单的亚军游戏。

我有游戏对象(四元组)。

我希望它能够生成。

我写了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)); 

    }
}

但是我的四次产卵了。我需要多次产卵。

我的问题在哪里?

2 个答案:

答案 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);
}