Ich bin neu in UniRx, also experimentiere ich gerade. Ich versuche, einen Spawner zu machen, indem ich ein GameObject ein neues Objekt erstellen lasse, wenn das vorherige zerstört wurde.UniRx Fehlerbehebung Verzögerung/Gas mit meinem Objekt Spawner
Einige davon funktionieren, aber wenn ich das Objekt zerstöre, wird es nicht jedes Mal neu erstellt. Meine Gedanken sind, dass solange ich es innerhalb der angegebenen Abklingzeit zerstöre, es neu erstellt wird, aber ich würde es gerne in der Lage sein, es zu töten, wenn es mit einer Verzögerung spawnt, die der zufälligen Abklingzeit entspricht.
Ich versuche, zerstörte Objekte mit einem Array zu verfolgen, um es auf eine bestimmte Anzahl von Objekten zu beschränken.
Ich habe versucht, Delay anstelle von Throttle mit dem gleichen Ergebnis zu verwenden.
private ReactiveProperty<GameObject[]> spawnedObjects;
public void spawnNewObject(int index)
{
if (spawnedObjects.Value[index] == null)
{
GameObject newSpawn = Instantiate(spawnObject, transform.position + offset, Quaternion.identity, transform);
spawnedObjects.Value[index] = newSpawn;
}
}
private void setupSpawner()
{
for (int i = 0; i < spawnedObjects.Value.Length; i++)
{
int j = i;
spawnedObjects
.ObserveEveryValueChanged(spawns => spawns.Value[j])
.Throttle(System.TimeSpan.FromSeconds(Random.Range(timeFromTo.x, timeFromTo.y)))
.Subscribe(_ => spawnNewObject(j));
}
}