最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity框架設計:如何組織項目目錄結構

2022-09-29 14:44 作者:博毅創(chuàng)為  | 我要投稿

Unity項目如何組織目錄結構,有幾個習慣與你相同

組織好項目的目錄結構,是維護項目的很重要的一個點,我們學習別人源碼,了解別人的設計思路都是從目錄結構開始,一個清晰的目錄結構,對項目開發(fā)維護,項目管理來說非常的重要,目錄維護的好,大家在一起工作很愉快,目錄維護的不好,有可能會把項目搞的亂七八糟。今天我們一起來看看Unity架構師是如何維護自己的目錄結構的,再看看有幾個是和你相同的。

?

1: Unity項目的幾個基本原則

原則(1): 不在場景里面除啟動節(jié)點意外的任何節(jié)點。

Unity 提供方便的場景編輯器,好像我們拖拉帶拽,直接往場景里面搭建游戲場景,然后來做場景切換,這個我們在開放項目的時候是不提倡的。這樣做有兩個缺點:

A: 不方便多人同時編輯場景后的代碼提交與合并, 如果有沖突更麻煩。

B: 不方便打空包,節(jié)點都在場景,打包時,節(jié)點依賴的資源都會被打包進去。

C: 方便維護,維護復雜的場景,誰維護過誰知道。

?

原則(2): 不要在節(jié)點或預制體上直接掛與邏輯相關的代碼組件。

這個很好理解,如果我們直接在節(jié)點or預制體上掛代碼組件,代碼極難維護,如果我們要搜索哪些代碼在哪些地方調用,根本就無法通過搜索查到,如果一個一個節(jié)點,一個一個預制體的點開找,這樣維護起來非常麻煩, 也不方便資源更新與代碼熱更。

?

原則(3) 不要直接拖動節(jié)點,組件, 資源到代碼邏輯組件的屬性編輯器上。比如直接給Button組件掛響應函數(shù)等,原則2可以保證原則(3)不會出現(xiàn),但是我還是要強調一下。理由是不方便維護代碼,和多人協(xié)作開發(fā)與提交。

?

原則(4) 運行的時候只有一個場景,所有的內容代碼控制。

場景里面不允許放內容,那么做場景切換也就沒有意義了,所以我們只有一個運行時的場景。所有的內容,我們都要通過代碼來生成出來,這樣,搜索代碼,維護代碼就能看到整個完整的游戲邏輯。其他的場景可以用來編輯地圖,編輯角色等。編輯好后生成一個一個的資源預制體。所以我們項目里面一個運行時的空場景,以及其他資源編輯器關卡編輯的場景,而這些是編輯資源地圖而用,不會被打包進去。

?

原則(5) 使用純AssetsBundle來管理整個資源的加載與卸載, 不使用Resouces機制。

為什么不使用Resources, 機制來加載與卸載資源呢?Resources機制不方便資源更新,不方便打空包, Resources下的所有資源以及相關依賴都會被打包進去。 Resources也不方便資源更新, 所以干脆使用純AssetsBundle來做資源的加載與卸載,方便打空包,同時也方便資源更新。如果不打空包,只要把打包出來的ab包放到StreammingAssets目錄下,這個目錄下的所有的資源都會打包進去,到時候到這里來讀取ab包就可以了。

?

原則(6) 第三方的資源與插件的目錄結構要統(tǒng)一放到一個文件夾下。

我們完成一個Unity項目會經(jīng)常需要用到Unity插件,而Unity插件在開發(fā)的時候,從自己的角度出發(fā),所以目錄結構可能和我們的項目目錄結構理念維護不一致,所以我們要整理第三方插件, 還有可能包含代碼。

?

2: Unity項目的一級目錄結構

1級目錄結構如下:

AssetsPackages:所有的游戲資源,都存放到這個目錄下。

Editor: 框架與項目編輯器擴展代碼。

Scenes: 所有的游戲場景,包括運行場景,地圖編輯場景,角色編輯場景,特效編輯場景。

Scripts: 所有游戲的代碼,含框架與游戲邏輯代碼。

3rd: 第三方插件存放的位置。

SteammingAssets: 用來存放打包以后的ab資源包,這樣ab包能打入安裝包。

?

3: 重要一級目錄結構子目錄結構

1: AssetsPackage目錄如何分類?

AssetsPackage里面存放所有的資源,資源如何分類有決定了打ab包的時候的資源管理等,所以我們盡可能的要把資源按照功能來分類放好,那么我這邊會把AssetsPackage分成一下主要的子目錄。

AssetsPackage/GUI: 存放每個UI界面的GUI的圖片等相關。

AssetsPackage/Sounds: 存放游戲的音樂與音效

AssetsPackage/Maps: 存放游戲的地圖場景,可以在里面再繼續(xù)分關卡。

AssetsPackage/Charactors: 存放角色動畫等相關資源。

AssetsPackage/Effects: 存放粒子特效等相關資源

AssetsPackage/Excels: 存放游戲中配置文件的表格數(shù)據(jù)。

2: Scripts 目錄如何分類?

Scripts是代碼的主體維護的文件夾,這個文件夾的分類其實非常的重要,我這邊是這樣分類的。

Scripts/3rd : 用來存放純粹的第三方的C#代碼,不是插件,比如protobuf for C#等

Scripts/Game: 用來存放游戲邏輯代碼

Scripts/Utils: 用來存放游戲工具類的代碼, 比如單例,MD5, SHA1

Scripts/Managers: 用來存放主要的管理模塊代碼(資源管理,網(wǎng)絡模塊,聲音模塊等)

Scripts/AssetsBundle: 與Ab資源包管理更新相關的代碼。

……

3: Editor 目錄如何分類?

Editor是編輯器擴展代碼所放的目錄,我這邊是按照功能和擴展的模塊來分類放好對應的編輯器擴展代碼,如下:

Editor/AssetBundle: 編輯器擴展ab包自動化打包管理,版本管理,等編輯器相關代碼;

Editor/Common: 一些編輯器擴展的公用代碼。

Editor/ExcelBuild: 表格處理工具代碼;

Editor/PackageBuild: 打包時候的工具代碼

你有哪些編輯器擴展的工具和功能分類放到Editor目錄下。

3: AssetBundles輸出目錄結構

整個項目,都采用AssetsBundle資源管理模式,所以打出的AssetsBundle包也會有一個對應的目錄結構,這個目錄結構,不放在Unity項目的Assets文件夾中,而是放到和Assets文件夾同級的位置,如圖:

每個平臺,每個渠道的ab包是不一樣的,所以,在AssetsBundle里面我們要分渠道分平臺來打包。所以在AssetBundles路徑下,先分了平臺,再分渠道。

AssetBundles/Android/xxxx平臺

AssetBundles/iOS/xxxx平臺

?

當然這些最好制作AssetBundles打包工具的時候都能自動完成。

?

今天的Unity框架目錄結構分類與管理,就給大家介紹到這里,主要是介紹管理項目目錄結構的一些理念,與你的項目有多少是吻合的呢?

附:視頻教學

https://www.bycwedu.com/promotion_channels/2146264125


Unity框架設計:如何組織項目目錄結構的評論 (共 條)

分享到微博請遵守國家法律
新乐市| 盐城市| 临武县| 瑞昌市| 民乐县| 正宁县| 杨浦区| 津市市| 驻马店市| 达日县| 九寨沟县| 阿坝县| 屏东县| 湟中县| 湖州市| 济源市| 鄄城县| 南城县| 远安县| 扶余县| 额尔古纳市| 涪陵区| 莆田市| 安丘市| 平邑县| 四平市| 汕尾市| 榆树市| 子洲县| 新宁县| 沙河市| 清水县| 肃南| 栖霞市| 盖州市| 白水县| 郯城县| 峡江县| 庆元县| 晋中市| 永泰县|