C# 我如何迭代这个循环3次,然后停止循环,然后将内容保存到unity中的wav文件中
这段代码在unity中生成随机对象,我想知道如何摆脱它,创建一个wav文件并输出它,因为这个项目我正在使用一个旋律生成器,使用预先制作的对象生成声音,我想知道如何使它不会无限循环,当它结束时创建一个wav文件以便我可以播放它要求C# 我如何迭代这个循环3次,然后停止循环,然后将内容保存到unity中的wav文件中,c#,unity3d,C#,Unity3d,这段代码在unity中生成随机对象,我想知道如何摆脱它,创建一个wav文件并输出它,因为这个项目我正在使用一个旋律生成器,使用预先制作的对象生成声音,我想知道如何使它不会无限循环,当它结束时创建一个wav文件以便我可以播放它要求 using System.Collections; using System.Collections.Generic; using UnityEngine; public class RandomizedSpawner : MonoBehaviour { p
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RandomizedSpawner : MonoBehaviour
{
public GameObject prefab1, prefab2, prefab3, prefab4, prefab5;
public float spawnRate = 2f;
float nextspawn = 0f;
int WhatToSpawn;
void Update()
{
if (Time.time > nextspawn)
{
WhatToSpawn = Random.Range(1, 5);
Debug.Log(WhatToSpawn);
switch (WhatToSpawn)
{
case 1:
Instantiate(prefab1, transform.position, Quaternion.identity);
break;
case 2:
Instantiate(prefab2, transform.position, Quaternion.identity);
break;
case 3:
Instantiate(prefab3, transform.position, Quaternion.identity);
break;
case 4:
Instantiate(prefab4, transform.position, Quaternion.identity);
break;
case 5:
Instantiate(prefab5, transform.position, Quaternion.identity);
break;
}
nextspawn = Time.time + spawnRate;
}
}
这应该是您想要的,只是折射了您的代码并添加了您想要的:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RandomizedSpawner : MonoBehaviour
{
[SerializeField] private GameObject prefab1;
[SerializeField] private GameObject prefab2;
[SerializeField] private GameObject prefab3;
[SerializeField] private GameObject prefab4;
[SerializeField] private GameObject prefab5;
[SerializeField] private float spawnRate = 2f;
[SerializeField] private int maxSpawnCount = 3;
private float _timer;
private int _random;
private int _spawnCount;
private void Update()
{
if (_spawnCount < maxSpawnCount)
{
_timer += Time.deltaTime;
if (_timer >= spawnRate)
{
_timer -= spawnRate;
SpawnRandomPrefab();
}
}
else
{
YourOtherFunction();
}
}
private void SpawnRandomPrefab()
{
// The second parameter is exclusive, so if you want to be able to get X, it needs to be X+1
_random = Random.Range(1, 6);
Debug.Log(_random);
switch (_random)
{
case 1:
Instantiate(prefab1, transform.position, Quaternion.identity);
break;
case 2:
Instantiate(prefab2, transform.position, Quaternion.identity);
break;
case 3:
Instantiate(prefab3, transform.position, Quaternion.identity);
break;
case 4:
Instantiate(prefab4, transform.position, Quaternion.identity);
break;
case 5:
Instantiate(prefab5, transform.position, Quaternion.identity);
break;
}
_spawnCount++;
}
private void YourOtherFunction()
{
}
}
如果你指的是更新方法,只需使用一个int来计算你经过循环的时间?但是我希望这段代码在迭代之后做一些事情,我不知道如何编写它。放置一个计数器,然后ifcounter>3{do something}。而且,这在我看来不是一个循环,而是一个函数。你是在循环中调用这个函数吗?Cylegend,Update是一个Unity函数,每个帧都会被调用,但仍然不是一个真正的循环我不确定我在youtube教程中看到了这段代码,我正在尝试将其重新利用到我需要它做的事情中,或者在Unity中有更简单的方法来实现这一点吗