Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何迭代这个循环3次,然后停止循环,然后将内容保存到unity中的wav文件中_C#_Unity3d - Fatal编程技术网

C# 我如何迭代这个循环3次,然后停止循环,然后将内容保存到unity中的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

这段代码在unity中生成随机对象,我想知道如何摆脱它,创建一个wav文件并输出它,因为这个项目我正在使用一个旋律生成器,使用预先制作的对象生成声音,我想知道如何使它不会无限循环,当它结束时创建一个wav文件以便我可以播放它要求

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中有更简单的方法来实现这一点吗