① unity在不打開場景的情況下清理場景
unity在不打開場景的情況下清理場景的方法:
1、Unity中切換場景使用的是Application.LoadLevel()函數,括弧中加入場景的名稱或編號即可。
2、切換場景後所有載入物體都將刪除,除非使用Object.DontDestroyOnLoad(Object)添加標記。
3、還需要在File-BuildingSetting中運晌拍設置添加場景,否則也不能實現謹哪切旁羨換成功。
② unity 多場景assetbundle怎麼打包
5.x的批量命名後 。直接打包。場景可以再次單獨打包載入。
③ unity怎麼清掉所有package
unity清掉所有package的解決辦慶好法:
1、首先,小夥伴們先按ESC鍵-保存並退出遊戲,然後斷開連接-,退出遊戲.
2、接著要去電腦里罩差模刪掉mod。小夥伴們在游戲啟動器所在的文件夾中可以找到一個【.minecraft】文件夾,打開該文件夾物緩,在裡面找到一個【mods】文件夾。
3、然後打開mods文件夾,看名字刪除,如果你也不認識那個mod文件是什麼mod,有個簡單的方法,就是直接把名字復制到瀏覽器。
4、需要注意的是,有的mod是幾個文件組成的,比如砍樹mod,你如果只刪掉一個的話是不行的,那麼子啊啟動游戲時候會出現游戲無法啟動的情況。
④ 【Unity】打包(二)
這是涵蓋Assets,Resources和資源管理的一列文章中的第二篇。
這篇文章涵蓋了Unity序列化系統的內部原理和Unity是如何在不同的Objects間保持健壯的引用的,包括Unity編輯器與運行時。也討論了Objects和Assets在技術上的區別。這里涉及的主題對理解如何高效地載入和卸載Unity資源起到很重要的作用。合適的資源管理的關鍵是hi保持短的載入時間和較低的內存使用。
為了明白Unity是如何合理地管理數據的,了解Unity是如何標識和序列化數據是很重要的。第一個關鍵點就是區分Assets和UnityEngine.Objects。
Asset就是硬碟的上的一個文件,存儲在Unity工程的Assets文件夾。Textures,3d模型或音頻都是常見的Assets類型。一些Assets包含了Unity的內部數據類型,如材質,而另一些Assets需要處理成Unity內部數據類型,如FBX文件。
UnityEngine.Object或具有大寫'O'的對象,是描述特定資源實例的一組集合。可以是Unity使用的任何資源類型,比如mesh,sprite,AudioClip或AnimationClip。所有這些Objects都是繼承咐罩自 UnityEngine.Object 。
雖然大多數類型都是內置的,但有兩種特殊類型:
Assets和Objects是一對多的關系,也就是說任何給定的Asset文件包含一到多個的Objects。
所有的nityEngine.Objects可以引用其他UnityEngine.Objects。這些Objects可能是在同一個Asset文件,也可能從其他Asset文件引入。比如一個材質通常引用一個或多個Texture Objects。這些Texture Objects通常從一個或多個texture Asset文件引入(比如Pngs,Jpgs)。
當序列化的時候,這些引用由兩個獨立的數據組成:File GUID和Local ID。File GUID標識目標Asset文件保存在哪裡。局部唯一的Local ID標識Asset文件內的每個Object,因為Asset可能包含多個Objects。
File GUID保存在.meta文件。這些.meta文件是在Unity引入Asset的時候生成的,並且存儲在和Asset同一個目錄下。
以上的標識碼和引用關系可以通過文本編輯查看:創建一個新的UnityObject,修改Editor Setting暴露顯示Mate文件,序列化Assets為text。創建一個material,然後導入texture到工程。把這個material指認給一個場景中的cube並保存。
使用文本編輯器打開跟上滿material關聯的.meta文件,靠近頂部會出現標記為"guid"的信息。這一行定義了material Asset's文件的GUID。而查找Local ID需要使用文本編輯器打開material文件。material Object's 的定義是這樣的:
在上面的例子中,&之後的數據就是material的Local ID。如果這個material Object在Asset中GUID標搭舉識為"abcdefg",可以將material 對象唯一地標識為文件GUID "abcdefg"的組合,Local ID為"2100000"。
為什麼需要Unity的File GUID和Local ID? 回答的堅定的,因為它提供了一個靈活的、不依賴平台的工作流。
文件GUID為文件特定路徑提供了抽象描述。只要一個特衡枝鬧定的文件GUID與特定的文件關聯起來,那麼文件在磁碟的路徑變得無關緊要了。文件可以自由移動,而不需要更新所有引用這個文件的Objects。
任何一個Asset可能包含(或通過import產生)多個UnityEngine.Object 資源,這個時候需要Local ID明確的區分不同的Object。
如果一個File GUID關聯的Asset文件丟失了,對該Asset的所有對象的引用也會丟失。所以.meta文件必須要保存在跟它關聯的同名文件目錄下,這很重要。註:Unity會重新生成刪除的或丟失的.meta文件。
Unity Editor有Paths到GUIDs的映射表。無論Asset載入還是引入,都會記錄在映射表。映射表由Asset指定路徑鏈接到Asset File GUID。如果Unity Editor打開的狀態下,.meta文件丟失,並且Asset路徑沒有變化,Editor能夠確保Asset保留相同的File GUID。
如果Unity Editor在關閉狀態下丟失了.meta文件,或者Asset路徑變化了但.meta沒有跟著移動,那麼所有引用該Asset的Objects都會被破壞。
在1.1內部Assets和Objects章節說過,非Unity原生Asset類型必須導入到Unity。這是通過asset導入器來完成的。雖然這些導入器通常自動調用,但它們也可以通過 AssetImport API暴露介面。比如, TextureImporter API在導入單個texture Assets(如PNG文件)提供了訪問設置的介面。
導入的結果就是引入一個或多個UnityEngine.Objects。這些Objects在Unity Editor是可見的,以父Asset下有多個子Asset形式顯示,比如多個sprites嵌套在一個texture Asset,會當成sprite圖集導入。其中這些每個Object共享一個File GUID,因為他們的源數據保存在相同的Asset文件。它們將通過導入的texture Asset內部的Local ID進行區分。
導入進程會將源Asset轉化為適合所選擇目標平台的Asset。導入進程可能包含了一些重要的操作,比如texture壓縮。因為導入進程通常是一個耗時的進程,被導入的Asset緩存到Library文件夾,避免下次啟動Editor又重新導入Assets。
切確的說,導入後的內容存儲在以對應Asset的File GUID前兩位數字命名的文件夾中。這個文件夾存儲在Library/metadata/文件夾中。Asset中單個的Objects被序列化到一個名字與Asset的File GUID相同的二進制文件中。
導入進程對所有的Assets有效,不僅僅對非原生Assets。原生assets不需要漫長的轉換過程或重新序列化。
File GUIDs和Local IDs都是健壯性比較好的,但GUID比較慢,運行時需要消耗更多性能。Unity內部維護一個緩存,它將File GUIDs和Local IDs轉化成簡單的,唯一的整數。當新的Objects在緩存注冊的時候,會被分配一個簡單的,單調遞增的整數,這就叫Instance ID。
緩存維護了給定的Instance ID,File GUID和定義Object源數據位置的Local ID與 Object在內存中的instance(如果有的話)之間的映射。解析Instance ID可以快速返回Instance ID代表的載入Object。如果目標Object還沒有載入,File GUID和Local ID可以解析到Object源數據,可以讓Unity及時載入出Object。
項目啟動的時候,Instance ID緩存初始化所有的Objects(如場景中的引用),只要這些Objects在Resources文件夾。另外,當新的assets在運行時導入進來或從AssetBundle載入Objects時,Instance ID會加進緩存中。當提供訪問指定File GUID和Local ID的AssetBundle卸載(uploaded)時,Instance ID才會從緩存中移除。發生這種情況的時候,Instance ID,File GUID,Local ID之間的映射會被刪除(節約內存)。如果這個AssetBundle重新載入了,會從這個重新載入的AssetBundle為載入出來的每個Object創建一個新的Instance ID。
深度討論AssetBundles卸載的含義,這看 Managing Loaded Assets 章節和 AssetBundle Usage Patterns 文章。
在一些平台上,一些事件可以強制讓Objects強制從內存中移除。比如,當IOS app暫停的時候,圖形Assets會從圖形內存中卸載。如果這些Objects是從AssetBundle載入出來的就會被卸載掉,並且Unity不能夠重新載入這些源數據。任何現存的引用這些Objects的對象視為無效。前面的這種情況,場景中可能出現不可見的meshes或紫紅色的圖片。
實踐Tips:運行時,上述控制流並非字面上那麼精確。當運行時,有大量大量載入操作的時候,File GUIDs和Local IDs表現沒有那麼好。當創建一個Unity項目的時候,File GUIDs和Local IDs切確地映射成了一種更簡單的格式。