- Home /
BuildStreamedSceneAssetBundle causes UnityEditor error
I'm creating an editor script that does two things when you click on the "Export" button on the editor
build an asset bundle
upload asset bundle to Amazon
It successfully finishes building the asset bundle, but then it triggers a UnityEditor error and cannot make it onto step 2. Here is the error I get:
InvalidOperationException: Operation is not valid due to the current state of the object
System.Collections.Stack.Peek () (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections/Stack.cs:321)
UnityEngine.GUILayoutUtility.EndLayoutGroup () (at C:/buildslave/unity/build/artifacts/EditorGenerated/GUILayoutUtility.cs:223)
UnityEngine.GUILayout.EndVertical () (at C:/buildslave/unity/build/artifacts/EditorGenerated/GUILayout.cs:266)
UnityEditor.EditorGUILayout.EndVertical () (at C:/buildslave/unity/build/Editor/Mono/EditorGUI.cs:5923)
UnityEditor.InspectorWindow.DrawEditor (UnityEditor.Editor editor, Int32 editorIndex, Boolean forceDirty, System.Boolean& showImportedObjectBarNext, UnityEngine.Rect& importedObjectBarRect, Boolean eyeDropperDirty) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:1107)
UnityEditor.InspectorWindow.DrawEditors (UnityEditor.Editor[] editors) (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:907)
UnityEditor.InspectorWindow.OnGUI () (at C:/buildslave/unity/build/Editor/Mono/Inspector/InspectorWindow.cs:332)
System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
It seems to be trying to update UnityEditor GUI elements and errors out trying to access outside the bounds of a stack. Here is the core of my code.
In Editor/ExportToAmazonEditor.cs:
using UnityEngine;
using UnityEditor;
using System.IO;
[CustomEditor(typeof(ExportToAmazonScript))]
public class ExportToAmazonEditor : Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector();
if (GUILayout.Button("Export!"))
{
string amazonExportDir = string.Join(Path.DirectorySeparatorChar.ToString(), new string[]{"Assets", "Scenes", "amazonExportTmpFiles"}) +
Path.DirectorySeparatorChar;
string sceneFile = amazonExportDir + "Volcano.unity";
string bundleFile = amazonExportDir + "Volcano.unity3d";
BuildPipeline.BuildStreamedSceneAssetBundle(new string[]{sceneFile}, bundleFile, BuildTarget.StandaloneWindows);
Debug.Log("done");
}
}
}
In ExportToAmazonScript.cs:
using System;
using UnityEngine;
public class ExportToAmazonScript : MonoBehaviour
{
}
I have confirmed that the BuildStreamedSceneAssetBundle call is causing the error. If I comment that line out, I don't get that error. Another interesting thing is that if I move that call to be triggered by a MenuItem instead of by that Button, then I also do NOT get that error. (But sadly that is not a viable option because the MenuItem requires functions and variables to be static and that messes with the Amazon SDK in step 2.)
The only remotely similar problem I've seen is this: http://answers.unity3d.com/questions/852155/invalidoperationexception-operation-is-not-valid-d-1.html I've already tried resetting my Unity editor layout and restarting and that did not help.
Can anyone tell me what is causing that error and how I can fix it? Thanks!
Your answer
Follow this Question
Related Questions
Run method of editor script when application is playing 1 Answer
EditorGUILayout.TextField changes back to first value I input [GIF of the problem inside] 1 Answer
PrefabUtility.InstantiatePrefab not preserving prefab connection 0 Answers
Can AssetDatabase.LoadAllAssetsAtPath Load All Assets Recursively? 2 Answers
Editor-Script: NullReference after simple script execution 3 Answers