2015-05-26 110 views
0

將此代碼添加到編輯器窗口腳本中,通過腳本添加對象,然後嘗試創建新場景。爲什麼團結在開新房之前不要求保存現場?Unity 5.在新場景打開之前不保存場景

Event e = Event.current; 
     switch (e.type) 
     { 
      case EventType.keyDown: 
       { 
        if (e.keyCode == KeyCode.Escape) 
        { 
         GameObject b = new GameObject(); 
         b.transform.position = new Vector3(0,0,0); 
        } 
        e.Use();  
       } 
       break; 
     } 
+1

不能在這裏測試,但你可能需要告訴你的團結場景已使用EditorUtility.SetDirty(someObject)實際上改變; – Kamalen

+0

試過它的人,它仍然沒有工作。儘管現在會玩這個選項,看看是否有什麼可以來自它。感謝這個想法。 –

回答

0

創建對象,(或做任何事情在場景中的對象),你需要調用EditorUtility.SetDirty(b);也是一樣,如果你改變你寫一個腳本中的數值後,您將需要標記髒以及變化持續下去。

+0

嘿,我只是試過這個,它仍然沒有要求保存。儘管如此,我還是會玩髒價值,所以感謝這個想法。任何其他想法? –

+0

也許嘗試設置b.transform髒?設置髒是唯一沒有正確保存的問題。也許嘗試改變位置爲Vector3.one設置髒,然後設置回Vector3.zero使其認爲它很髒。不是一個很好的長期解決方案,但它可以工作。 –

+0

這也不起作用:/這一切都在Unity 4中工作,沒有問題,也不需要設置髒。這只是Unity 5我遇到了問題。編輯器通過腳本創建的新gameobject不會要求在退出或新場景時保存更改。你認爲這是一個錯誤嗎? –

2

我不知道這是否幫助,但對於在Unity 5

髒位您有:在你的代碼的頂部

using UnityEditor.SceneManagement; 

。然後使用:

EditorSceneManager.MarkAllScenesDirty(); //or mark individual scenes as dirty 

絕對必要的,如果你有自定義編輯器腳本動態實例化遊戲對象。然而老(我有一個創建一個基於圖塊的地圖。在編輯器中看起來不錯。我會保存現場,玩遊戲,它已經走了......)

我不能充分信貸的發現,團結4帖子指出我正確的方向。