Example #1
0
		void Dispose()
		{
			int cnt = _items.Count;
			for (int i = 0; i < cnt; i++)
			{
				PackageItem pi = _items[i];
				if (pi.texture != null)
				{
					if (Application.isPlaying)
					{
						if (pi.texture.alphaTexture != null)
							Texture.Destroy(pi.texture.alphaTexture);
						if (pi.texture != NTexture.Empty)
							pi.texture.Dispose();
					}
					else
						pi.texture.DestroyMaterials();
				}
				else if (pi.audioClip != null)
				{
					if (Application.isPlaying)
						AudioClip.Destroy(pi.audioClip);
				}
				else if (pi.bitmapFont != null)
					FontManager.UnregisterFont(pi.bitmapFont);
			}

			if (_resBundle != null)
				_resBundle.Unload(true);
		}
    ///-----------------------------------------------------------
    /// <summary>録音終了</summary>
    ///-----------------------------------------------------------
    public void StopRecord()
    {
        //マイクの録音位置を取得
        int position = Microphone.GetPosition(mic);

        //マイクの録音を強制的に終了
        Microphone.End(mic);

        //シーク位置を検査
        if (position > 0)
        {
            //再生時間を確認すると、停止した時間に関わらず、maxDurationの値になっている。これは無音を含んでいる?
            Debug.Log("修正前の録音時間: " + audioClip.length);

            //音声データ一時退避用の領域を確保し、audioClipからのデータを格納
            float[] soundData = new float[audioClip.samples * audioClip.channels];
            audioClip.GetData(soundData, 0);

            //新しい音声データ領域を確保し、positonの分だけ格納できるサイズにする。
            float[] newData = new float[position * audioClip.channels];

            //positionの分だけデータをコピー
            for (int i = 0; i < newData.Length; i++)
            {
                newData[i] = soundData[i];
            }

            //新しいAudioClipのインスタンスを生成し、音声データをセット
            AudioClip newClip = AudioClip.Create(audioClip.name, position, audioClip.channels, audioClip.frequency, false);
            newClip.SetData(newData, 0);

            //audioClipを新しいものに差し替え
            AudioClip.Destroy(audioClip);
            audioClip = newClip;

            //再生時間
            Debug.Log("修正後の録音時間: " + newClip.length);
        }
    }
Example #3
0
 public void StopPlayback()
 {
     m_audioSource.Pause();
     StopCoroutine(m_songPlayCoroutine);
     AudioClip.Destroy(m_audioSource.clip); // RPB: IMPORTANT! If we don't have this, the app runs out of memory and crashes!!!
 }