type of scene asset

I’m making editor window that will perform some operations on scenes(*.unity). And i want to objectfield with just scene support.

I have code something like this:
private void OnGUI() {
  scene = EditorGUILayout.ObjectField(scenes*, typeof (Object), false, null);*

//other stuff
}
EditorGUILayout.ObjectField(scenes*, typeof (<what type?>), false, null);*
with that code scene can take any object. What type I need to put just to allow only scenes there? I tried EditorBuildSettingsScene, but it doesn’t allow any scene to put in my editor window.

I've no idea off hand - but you can tell by just doing if(scene != null) Debug.Log(scene.GetType().FullName); In the code you have and drop a scene into the ObjectField.

it's type - UnityEngine.SceneAsset, unity's internal type

when i use UnityEngine.SceneAsset in my code, the compiler complains that this class name does not exist... ?

1 Answer

1

UnityEngine.SceneAsset is not recognized by the compiler, but you can check if the Object.ToString() ends with “(UnityEngine.SceneAsset)”.
I used a workaround to create a level manager which creates the order in which levels will be played.

This is how I managed it:

public string LevelName;
private Object _levelScene;
public Object LevelScene
{
	get {return _levelScene;}
	set
	{
	    //Only set when the value is changed
		if(_levelScene != value && value != null)
		{
			string name = value.ToString();
			if(name.Contains(" (UnityEngine.SceneAsset)"))
			{
				_levelScene = value;
				LevelName = name.Substring(0,name.IndexOf(" (UnityEngine.SceneAsset)"));
			}
		}
	}
}

And in editor window:

LevelScene = EditorGUILayout.ObjectField("Scene",LevelScene,typeof(Object),false);

Later, I can load the correct level using the LevelName.