Serializing AudioClip or Texture2D correction

Im about to build a GameManager, with all premade data in it.
Then i was confronted with saving data and serializtion, haha i spend maybe a week to solve this, after written a punch of code.

So my question actually (as a beginner of coding in c#) is that the method to serialize Audio and Textures like i do is a good solution?

I save to file with the BinaryFormatter.

Audio:

using UnityEngine;
using System.Collections;
[System.Serializable]
public class AUDIO {
	public AUDIO(audioPath path,string clipname) 
	{
		fileName = clipname;
		fileEnum = path;
	}
	public AUDIO(audioPath path) 
	{
		fileName = "";
		fileEnum = path;
	}
	// Use this for initialization
	public string fileName = string.Empty;
	public audioPath fileEnum;
	public bool loop;
	public float volume = 1;
	public float pitch = 1;
	public float panLevel = 0;
	// AUDIO.getAudio() returns audiofile
	public AudioClip getAudio () {
		if (fileName != "") {
			try {
				if (fileEnum == audioPath.BACKGROUNDMUSIC|| fileEnum == audioPath.BACKGROUNDSOUND) {
					loop = true;
				}
				return Resources.Load("Audio/"+fileEnum.ToString()+"/"+fileName) as AudioClip;
			} catch {
				AudioClip empty = new AudioClip() as AudioClip;
				return empty;
			}
		} else {
			AudioClip empty = new AudioClip() as AudioClip;
			return empty;
		}
	}
	public AudioClip setAudio(audioPath path,AudioClip clip) {
		if (clip != null) {
			fileName = clip.name;
			fileEnum = path;
			
		}
		return clip;
	}
}
public enum audioPath {
	BACKGROUNDMUSIC,
	BACKGROUNDSOUND,
	MUSICEFFECT,
	SOUNDEFFECT
}

and Textures:

using UnityEngine;
using System.Collections;
[System.Serializable]
public class IMG {
	public IMG(graphicPath path,string imgname) 
	{
		fileName = imgname;
		fileEnum = path;
	}
	public IMG(graphicPath path) 
	{
		fileName = "";
		fileEnum = path;
	}
	// Use this for initialization
	public string fileName = string.Empty;
	public graphicPath fileEnum;
	
	public Texture2D getTexture () {
		if (fileName != "") {
			try {
				return Resources.Load("Graphics/"+fileEnum.ToString()+"/"+fileName) as Texture2D;
			} catch {
				Texture2D empty = new Texture2D(0,0) as Texture2D;
				return empty;
			}
		} else {
			Texture2D empty = new Texture2D(0,0) as Texture2D;
			return empty;
		}
	}
	public Texture2D setTexture(graphicPath path,Texture2D tex) {
		if (tex != null) {
			fileName = tex.name;
			fileEnum = path;
			
			
		}
		return tex;
	}
}
public enum graphicPath {
	ICONS,
	FACES
}

Only a example to call AUDIO:
In Database:

public AUDIO TESTCLIP;

In MonoBehaviour:

		database.TESTCLIP = new AUDIO(audioPath.BGM,"BIGBOOMBGM");
		AudioClip testCLIP = database.TESTCLIP.getAudio();
		GameObject gameaudio = GameObject.Find("GameAudio");
		gameaudio.AddComponent<AudioSource>();
		gameaudio.GetComponent<AudioSource>().clip = testCLIP;
		gameaudio.GetComponent<AudioSource>().loop = database.TESTCLIP.loop;
		gameaudio.GetComponent<AudioSource>().panLevel = database.TESTCLIP.panLevel;
		gameaudio.GetComponent<AudioSource>().Play();

same thing for Textures.

Is this pice of code stable to build on?

For textures, I would just use http://docs.unity3d.com/Documentation/ScriptReference/Texture2D.EncodeToPNG.html and the WWW class to read it in. Very easy.

I’ve not used Serialize, but on the face of it, seems like an ok solution. But yeah, putting stuff in resources is not needed. If you put in resources, it gets compiled for easy reading (I believe), but if you do your own file i/o, you can (should) put them elsewhere.