前端開發框架整理(一些記錄給自己看的)

2022-09-20 05:42:12 字數 3658 閱讀 8519

1. 目錄結構

(1) config

(2) plugins

(3) resource

(4) script

(5) streamingassets

(6) unityvs

(7) xlua

(8) doc

(9) scene

assets _

|_ resource (資源) (assetspackage -> 資源打包,待研究)

|_ plugins (外掛程式)

|_ luascripts (lua指令碼)

|_ reporter (異常捕獲,效能除錯,bug reporter)

|_ scenes (場景)

|_ scripts (c#指令碼)

|_ streamingassets (raw目錄)

|_ editor (打包)

二. 框架事項

1. 模組管理

(1) ui管理

(2) 協程管理

(3) 定時器管理

(4) 資源管理

(5) 網路管理

(6) 配置表

(7) xlua

三. 初始化

//入口指令碼

gamelaunch.cs

1. 初始化logger

(1) assetbundleconfig.cs:assetbundle配置檔案

(2) assetbundlemanager.cs:assetbundle管理類

為外部提供統一的資源載入介面、協調assetbundle各個子系統的執行

/// 注意事項:

/// 1、拋棄resources目錄的使用,官方建議:

/// 2、提供editor和simulate模式,前者不適用assetbundle,直接載入資源,快速開發;後者使用assetbundle,用本地伺服器模擬資源更新

/// 3、場景不進行打包,場景資源打包為預設

/// 4、只提供非同步介面,所有載入按非同步進行

/// 5、採用lzma壓縮方式,效能瓶頸在assetbundle載入上,ab載入非同步,asset載入同步,ab載入後匯出全部asset並解除安裝ab

/// 6、所有公共ab包(被多個ab包依賴)常駐記憶體,非公共包載入asset以後立刻解除安裝,被依賴的公共ab包會隨著資源預載入自動載入並常駐記憶體

/// 7、隨意解除安裝公共ab包可能導致記憶體資源重複,最好在切換場景時再手動清理不需要的公共ab包

/// 8、常駐包(公共ab包)引用計數不為0時手動清理無效,正在等待載入的所有ab包不能強行終止---一旦發起建立就一定要等操作結束,非同步過程進行中清理無效

/// 9、切換場景時最好預載入所有可能使用到的資源,所有載入器用完以後記得dispose**,清理gc時注意先釋放所有asset快取

/// 10、邏輯層所有asset路徑帶檔案型別字尾,且是assetbundleconfig.resourcesfoldername下的相對路徑,注意:路徑區分大小寫

/// 使用說明:

/// 1、由asset路徑獲取assetname、assetbundlename:parseassetpathtonames

/// 2、設定常駐(公共)ab包:setassetbundleresident(assebundlename, true)---公共ab包已經自動設定常駐

/// 2、(預)載入資源:var loader = loadassetbundleasync(assetbundlename),協程等待載入完畢後dispose:loader.dispose()

/// 3、載入asset資源:var loader = loadassetasync(assetpath, textasset),協程等待載入完畢後dispose:loader.dispose()

/// 4、離開場景清理所有asset快取:clearassetscache(),unloadunusedassetbundles(), resources.unloadunusedassets()

/// 5、離開場景清理必要的(公共)ab包:tryunloadassetbundle(),注意:這裡只是嘗試解除安裝,所有引用計數不為0的包(還正在載入)不會被清理

/// 說明: 對映規則:

/// 1)對於asset:asset載入路徑(相對於assets資料夾)到assetbundle名與asset名的對映

/// 2)對於帶有variant的assetbundle,做通用替換處理

/// 注意:assets路徑帶檔案型別字尾,且區分大小寫

/// 使用說明:

/// 1)asset載入:

/// 假定assetbundleconfig設定為assetsfoldername = "assetspackage",且:

/// a)assetbundle名稱:assetspackage/ui/prefabs/view/uiloading_prefab.assetbundle

/// b)assetbundle中資源:uiloading.prefab

/// c)assets路徑為:assets/assetspackage/ui/prefabs/view/uiloading.prefab

/// 則**中需要的載入路徑為:ui/prefabs/view/uiloading.prefab

/// 2)帶variant的assetbundle資源載入:

/// 假定設定為:

/// a)assetbundle名稱:assetspackage/ui/prefabs/language,定義在以下兩個子路徑

/// assets/assetspackage/ui/prefabs/language/[chinese],variant = chinese

/// assets/assetspackage/ui/prefabs/language/[english],variant = english

/// b)assetbundle中資源:

/// assets/assetspackage/ui/prefabs/language/[chinese]/testvariant.prefab

/// assets/assetspackage/ui/prefabs/language/[english]/testvariant.prefab

/// c)使用時設定啟用的variant為chinese或者english,則**中需要的載入路徑統一為:

/// assets/assetspackage/ui/prefabs/testvariant.prefab===>即variant目錄([chinese]、[english])將被忽略,使邏輯層**不需要關注variant帶來的路徑差異

(5) manifest.cs:manifest管理:提供對assetbundlemanifest類的封裝

/// 注意:關於manifest,unity有個2個bug:不記得在哪個版本修復了,這裡使用manifest相關介面一律自行過濾掉,兩個bug如下:

/// 1、可能會給空的ab名字,具體情況未知

/// 2、可能會包含自身,具體情況未知

另外再開乙個章節,記錄資源載入管理。

目標:1. 玩轉xlua

記錄一些sql 給自己

當需要用到如果資料庫存在就更新,不存在就儲存的情況,可以使用下面這個關鍵字。on duplicate key update 如何判斷這個資料是存在的呢?看這個關鍵字,起初我以為是根據主鍵key來判斷是否存在同乙個資料的,看了一些部落格也是這麼說的。但是在我自己的測試中,我給id設定了主鍵,但是在我希...

自己前端的一些筆記

彈性盒 移動端布局 1.父元素的屬性 display flex 我是乙個彈性盒 子元素水平排列 flex direction column 子元素垂直排列 justify content center 子元素水平對齊方式 align items center 子元素垂直對齊方式 2.子元素的屬性 f...

整理的一些前端資源

綜合類入門類 效果類工具類 慕課專題 週刊類平安科技移動開發二隊技術週報 360奇舞週刊 1.總目錄 開發中心 綜合搜尋 綜合api 2.jquery 3.ecmascript 4.js template 5.彈出層 6.css 7.angularjs 8.react 綜合類入門類 效果類工具類 慕...