Load the Same Level, but Different Configurations?

Hi there everyone! I’ve made a horror app and I have had request to have different modes. The level is set within a forest, at night. People are asking for a daylight mode, and I am trying to implement a stormy version as well.

I’ve cloned the scene and add the changed preferences and added it into the selection of different level version. It works… but it dramatically increases the size of my app since I have the WHOLE SCENE duplicated again, for each version!

Is there a simple way (if possible in script form) of having the level preferences change, say when I’m at the main menu and there are 3 different versions of the level (night, day, storm) and all of them are the same level, but somehow they change? I’ve seen this before in other horror apps and the size of the app is definitely not as big as my app has become.

Sample list declaration (adopt to your stuff)

public List<QM_Skills> playerSkills = new List<QM_Skills> ();

http://unity3d.com/learn/tutorials/modules/intermediate/scripting/lists-and-dictionaries

Okay, a new question has came up. I have done everything and fixed the scripts up a little bit to my liking for the Level Selection Configurations and I’ve made it VERY basic at the moment.

How do I apply it though? I’ve placed it on a Main Camera and press play, but the skybox does not change and the fog does not activate. (I’m much newer to C# than Javascript)

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

[System.Serializable]
public class LevelElement
{
	public enum Levels{ Night, Day, Storm };
	//public enum AvatarPos{ left, right};
	public Levels Level;
	//public AvatarPos CharacterPosition;
	//public Texture2D LevelPic;
	//public string DialogueText;
	//public GUIStyle DialogueTextStyle;
	//public float TextPlayBackSpeed;
	//public AudioClip PlayBackSoundFile;

	public Material dayMaterial;
	public Material nightMaterial;

void LevelSelection(){
	RenderSettings.skybox = nightMaterial;
	//RenderSettings.skybox = dayMaterial;
	RenderSettings.fog = true;
	//RenderSettings.fog = false;
	}
}

public class Level: ScriptableObject
{
	public List<LevelElement> LevelItems = new List<LevelElement> ();
}