I have this Audio Waveform visualizer script that uses the old On GUI texture which is next to impossible to get to line up properly with the new UI system and a multiple UI canvases & cameras kind of set up in a single scene, Can anyone tell me how I can modify this script to make it use the UI image instead which is much easier to position in my canvas layouts?
Anyone??
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
//[RequireComponent(typeof(AudioSource))]
[RequireComponent(typeof(GUITexture))]
public class AudioWaveFormVisualizer : MonoBehaviour
{
public AudioSource MusicPlayer;
public int width = 500; // texture width
public int height = 100; // texture height
public Color backgroundColor = Color.black;
public Color waveformColor = Color.green;
public int size = 2048; // size of sound segment displayed in texture
private Color[] blank; // blank image array
private Texture2D texture;
private float[] samples; // audio samples array
IEnumerator Start ()
{
// create the samples array
samples = new float;
// create the texture and assign to the guiTexture:
texture = new Texture2D (width, height);
GetComponent<GUITexture>().texture = texture;
// create a 'blank screen' image
blank = new Color[width * height];
for (int i = 0; i < blank.Length; i++) {
blank *= backgroundColor;*
-
}*
-
// refresh the display each 100mS*
-
while (true) {*
-
GetCurWave ();*
-
yield return new WaitForSeconds (0.1f);*
-
}*
-
}*
-
void GetCurWave ()*
-
{*
-
// clear the texture*
-
texture.SetPixels (blank, 0);*
-
// get samples from channel 0 (left)*
-
MusicPlayer.GetOutputData (samples, 0);*
-
// draw the waveform*
-
for (int i = 0; i < size; i++) {*
_ texture.SetPixel ((int)(width * i / size), (int)(height * (samples + 1f) / 2f), waveformColor);_
* } // upload to the graphics card*
* texture.Apply ();*
* }*
}