日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

漫步Unity3D(三)

發布時間:2023/12/18 编程问答 28 如意码农
生活随笔 收集整理的這篇文章主要介紹了 漫步Unity3D(三) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

八、預制(Prefab)

僅此一點提出,由于它使用過于頻繁。

還Unity 一中的核心要素。原本Unity你拖放模型到場景中的一個對象,或者,創建一個幾何。或淺的地形。個物體的偏移、旋轉和縮放。然后綁定好腳本,設置好參數。假設想要第二個相同物體的話。復制一份。可是問題來了,假設有一個問題須要這n個物體都進行改動,那么就要操作n遍。這個時候預制就體現出威力了,你能夠拖拽場景中的物體到下方的資源瀏覽窗體中,這樣一個新的預制居創建出來了。

場景中的n個物體都是通過預制創建的,那么直接改動預制。場景中的這些物體就都會對應的進行改變。相同,改動完場景中的屬性,然后點擊屬性窗體中的Applybutton,預制也會被改動。唯一例外的組件是Transform組件,它不會被預制改動。

除此之外的其它組件。包含腳本配置的參數都會被改動。

能夠簡單的理解為預制就是一個配置文件,記錄了物體和相關的配置參數。

而非常多時候,我也確實拿它來做腳本配置,比方實現技能系統的時候。每一個技能都是一個預制,給它綁定好相應的腳本,配置好技能參數。然后游戲中釋放技能的時候實例化這個預制就能夠了。

之前有一個問題一直困擾著我,我想要預制支持這樣一個功能,它當中的參數能夠序列化到場景文件里。可是又不會受到Applybutton的影響。這樣我就能夠方便的把一個預制拖動到場景中,復制n份。分別做場景編輯的配置。并且不用操心我一不小心點了Applybutton把全部的場景全玩砸了。

只是如今想來。這個功能全然能夠不用預制來實現,擴展一下菜單功能直接生成并組裝好物體就能夠了。

總之,Unity中盡量使用預制來載入模型和其它資源。而不要直接使用,這個是一個正確的思路和方向。

很方便,而且易于維護。

九、文件系統和AssetsBundle

既然講到Prefab了。就順帶把Unity的文件系統也解說一下。

在手游興起之前,Unity特長是頁游開發。這個是虛幻等引擎不具備的功能。文件打包系統和AssetsBundle就是當中重要的一環。

Unity游戲執行的是一個場景,默認會載入一個場景,代碼中能夠通過Application.LoadLevel來載入其它場景。游戲執行時僅僅會存在一個場景。載入一個新的場景,舊的場景資源會被釋放掉。

當然Application.LoadLevelAdditive能夠把一個場景加入到當前場景上。每一個腳本都能夠使用DontDestroyOnLoad函數。聲明當前對象不會在場景載入的時候被銷毀掉,經常使用于單例模式。

Unity打包游戲資源的時候會依據當前場景中依賴的資源進行篩選。沒有被使用到的資源是不會被打包的。圖片被打包的時候還會依據配置進行紋理壓縮,這個功能很方便并且強大。借助于這個功能,你不須要各個平臺維護一套資源,Unity自己主動幫助你搞定了。

當然Unity把轉化后的文件緩存起來了,所以切換平臺的時候這些文件會又一次壓縮一遍。

所以我建議一個平臺checkout一份project。這樣就能夠避免多平臺切換時的時間消耗了。

Unity導出后的資源命名為level(N)和sharedassets(N).assets。你不能直接讀取一個文件,全部文件必須存在于場景中,或者是被場景中的某一個物件的腳本引用到。

這樣的模式在制作簡單的游戲或者小游戲的時候非常方便。可是游戲大了就力不從心了。我們實際游戲開發中大多數碰到的還是動態載入的情況。

比方我如今的游戲就僅僅有一個場景,里面僅僅存放了幾個簡單的管理類。

全部須要的界面、場景都是執行時動態載入的。這個時候我們須要把資源(更確切的說是預制。Unity會自己主動依據依賴關系進行資源查找和打包)放到Resources目錄下。放到這個目錄下的資源不管場景有沒有使用到都會被導出。而且代碼中能夠使用Resources.Load("文件路徑")來載入這個物件。

載入好物件后再通過Instantiate函數實例化這個對象,然后就能夠正常使用了。

最后再說一說AssetsBundle,這個也是一個小的文件系統。

我們為了降低安裝包的體積,或者是為了自己主動更新資源,必需要使用AssetsBundle來打包資源。

我們能夠通過擴展編輯器來寫一個ExportResource的函數,將指定的文件打包成AssetsBundle,然后能夠將這個包放到server上面,游戲執行的時候動態下載并載入。能夠說一個mmo的實現必定要使用到這個功能。它是對Unity相對封閉的文件系統的一個開放接口。

十、物件屬性的配置和編輯器擴展

這個是很出彩的功能,借助于反射機制。這個功能無比的便捷和強大。你僅僅要寫一個腳本。然后加入一個public的變量。然后就能夠在編輯器中設置這個值了。當然Unity僅僅識別內建類型。自定義的類要加上[System.Serializable]來聲明。

Unity的編輯器擴展功能很強大,你能夠輕易的重寫屬性窗體中的顯示內容和顯示方式,也能夠加入一個button來實現某個特殊功能。Unity 的內建GUI最大的用途就是這里了。

十一、關于Editor目錄的說明

假設你看下Unity自己主動生成的vsproject。會發現project數目有可能會達到七八個。 Unity全部編輯器相關的腳本文件都要放到Editor文件夾以下(是不是根文件夾無所謂,僅僅要名字叫Editor就能夠了)。這些文件會單獨生成一個Unity-Editor的project。全部包括UnityEditor的代碼僅僅能在編輯器模式下執行,不能公布到windows或者android上面。

(第三部要點是關于Unity 實用,第四到實際的游戲解決方案的一部分,)

版權聲明:本文博客原創文章,博客,未經同意,不得轉載。

總結

以上是生活随笔為你收集整理的漫步Unity3D(三)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。