![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
unity asset store匯入 在 コバにゃんチャンネル Youtube 的最佳解答
![post-title](https://i.ytimg.com/vi/_RsaNzZFuUU/hqdefault.jpg)
Search
unity匯入 素材2023-在Facebook/IG/Youtube上的焦點新聞和熱門話題資訊,找unity asset store購買,Unity asset store,unity匯入素材在2022年該注意什麼?unity匯入素材 ... ... <看更多>
unity匯入 素材2023-在Facebook/IG/Youtube上的焦點新聞和熱門話題資訊,找unity asset store購買,Unity asset store,unity匯入素材在2022年該注意什麼?unity匯入素材 ... ... <看更多>
#1. Unity Asset Store教學分享! - 吉橙數位學院DelightCollab
首先,要確保有網路連線,然後打開要匯入Asset的Unity專案。 在專案中打開Package Manager視窗。
#2. 介紹Unity的Asset Store和從Asset Store或網路下載3D模型
再點擊Import→Import匯入,如果下載其他的模型匯入時跳出警告視窗請點選安裝/升級。 匯入完成Project列表會出現剛匯入的資料夾。 https://ithelp.ithome.com.tw/upload ...
#3. 导入Asset Store 资源包- Unity 手册
单击Import 按钮以导入选定的Asset Store 资源包。 Import Unity Package 窗口将显示包中已选择的所有项,然后可以直接安装。 全新安装Import Unity Package 对话框.
#4. 【Unity Asset Store】介紹與購買教學:超完整的遊戲設計素材 ...
首先前往Unity Asset Store可以看見總共有八種主要素材資源分類,分別是3D、2D、插件、音頻、必備工具、模板、工具和VFX,依據你需要的素材來選擇分類,再進一步挑選子選項 ...
#5. How to import asset from Unity asset store in 2022 - VionixStudio
Open Unity package manager by going to Window>PackageManager. · Wait for the package manager to populate the list. · Select My assets from the ...
#6. Unity3D 教學﹥29 Asset Store 素材商店 - 我的程式開發筆記
Asset Store 是Unity 的線上資源商店,提供大量的角色模型、道具、材質、紋理、地形 ... 下載完成後,按下Import 即可匯入到目前編輯的遊戲專案中。
#7. Unity 匯入檔案 - Unity3D 教學.CG數位學習網
Ragdoll 是Unity 內建的布偶系統,我們從Asset Store 資源商店下載遊戲角色進行Ragdoll 的功能說明。 執行[ GameObject > 3D Object > Ragdoll ] 開啟Create Ragdoll 對話 ...
#8. unity匯入素材2023-在Facebook/IG/Youtube上的焦點新聞和 ...
unity匯入 素材2023-在Facebook/IG/Youtube上的焦點新聞和熱門話題資訊,找unity asset store購買,Unity asset store,unity匯入素材在2022年該注意什麼?unity匯入素材 ...
#9. 【2022】Unity Asset Store 上的素材可以商用嗎? - Happy Nerd
大多數Asset Store上的素材都可以給個人或是商業使用,只有少部分的素材會在說明欄、License或是package裡面特別標註不能商用,這個部分要在下載匯入 ...
#10. Asset Import Rule | Utilities Tools
Use the Asset Import Rule from watsonsong on your next project. Find this utility tool & more on the Unity Asset Store.
#11. 請問大家有在Unity asset store上買素材嗎
請問大家有在Unity asset store上買素材嗎? 有人知道他現在要填一個叫稅號(Tax Number)的東西是甚麼嗎? 我有查過台灣的稅號個人是身分證字號,公司是統一編號但我打上 ...
#12. Unity 課程講義
從Asset Store 匯入. Unity Asset Store 是由Unity Technologies 以及社群成員所建⽴持續成長的免費及. 商⽤資源庫的所在地。有各式各樣的資源可⽤,涵蓋從紋理、模型 ...
#13. [Unity手札]變更Asset Store存放路徑 - Chris Lin
Unity 的Asset Store是個非常方便的平台,有很多好用的工具與資源都可以在Asset Store上找到。但是有幾個缺點讓人頭疼. “[Unity手札]變更Asset Store ...
#14. Manual: Importing an Asset Store package
You can import an Asset StoreA growing library of free and commercial assets created by Unity and members of the community. Offers a wide variety of assets, ...
#15. 01 擴增實境介紹(1)
打開Unity Asset Store商店. Unity Asset Store頁籤拖移出來 ... 已下載過會呈現半透明. 匯入Unity Asset Store物件 ... 匯入的物件在Assets資料夾. Unity Asset Store ...
#16. GitHub - Unity-Technologies/com.unity.asset-store-tools
Open the Asset Store inside Unity and download and import the Asset Store Tools into the project containing the content you want to submit to the Asset Store.
#17. Unity 3D - ProgWiki
Book - Page Curl | Animation Tools | Unity Asset Store ... 在Unity裡匯入套件Assets → Import Package → Visual Studio 2013 Tools; 關閉Unity ...
#18. Unity遊戲設計架構
Asset Store. Unity ... Unity使用的package打包格式,可以把所有專案內用到的asset包含場景全部打包存成單一檔案,副檔名為*.unitypackage ... 之後按[Import]匯入.
#19. Unity 從Asset store 下載的Unitypackage 預設存放位置?
從Asset Store 下載的Plugins 下載完成後,系統自動只有Import 的選項可以選擇,. 想要把它備份起來的話, 就得找出下載的位置: ...
#20. Unity 動畫事件 - Enjoy 軟體
... 素材角色的閒置動畫可在Unity Asset Store 下載[Sunny Land](https://assetstore.unity.com/packages/2d/characters/sunny-land-103349) ## 匯入 ...
#21. Unity SteamVR 教學-基本設定流程(以Unity 2021.2版為例)
先到Asset Store 下載SteamVR Plugin,然後在unity開啟以下面板(Window > Package Manager)並透過搜尋找出SteamVR (記得把Packages 切換為My Assets),接著點擊Import ...
#22. Unity从Asset Store下载的资源安装包默认的保存位置及其修改
很多同学在学习Unity的过程中都会从Unity自带的Asset Store中下载,不知不觉中,我们的C盘也在变红的路上越走越远因为下载之后的资源会默认保存在C盘 ...
#23. 【Unity 教程】匯入3D 模型檔案 - 搜集點子版
Ragdoll 是Unity 內建的布偶系統,為了說明Ragdoll 的功能,我們從Asset Store 資源商店下載Soldier Character Pack 士兵角色。 【Unity 教程】匯入3D 模型檔案 ...
#24. Maxon宣布為Unity Technologies推出Cineware by Maxon外掛 ...
我們全新的Cineware by Maxon外掛程式為將Cinema 4D資產匯入Unity以開發沉浸式 ... Cineware by Maxon外掛程式即日起在Unity Asset Store中針對macOS ...
#25. Unity 環境與操作
主要操作介面Cont. □ 素材庫選單. □ 匯入素材 ... 製作好的轉出檔請移動到Unity 專案下的. Assets ... C:\Users\accountName\AppData\Roaming\Unity\Asset Store ...
#26. How to download unity assets manually | Peatix
create your download folder. simply go to the learn tab in the unity hub and search for this microgame, or manually import it via the asset store link below.
#27. How to import downloaded assets in Unity - Quora
Unity has changed the way to import assets from the asset store in the recent Unity versions. Earlier you can open a window inside the Unity editor and ...
#28. 【問題】新手求解請問關於匯入Standard asset - 哈啦區
我想要匯入standard asset 但找不到。我用的板本是unity 2018.3.14f1(64-bit) 上了官網找,它說這樣,但在自己的uniy 中又找不到。 請問我該如何做?
#29. 開始使用Unity 來建置遊戲- Visual Studio for Mac
不過,唯一在介面中顯示的是[Assets] 資料夾。 [Library] 資料夾是匯入資產的本機快取,它會保留資產的所有中繼資料。 [ProjectSettings] 資料夾會 ...
#30. 陳擎文教學網:Unity遊戲程式
(1)從外部匯入import的物件(3ds max, assets store),盡量不要設定mesh collider,因為mesh ... 到asset store視窗下載進入unity,在左上點選,asset store
#31. Unity - Using the Asset Store - Tutorialspoint
Once it finishes, the Download button will change to Import; click on it again to import your new Asset to the currently open project. (Note − in this ...
#32. 搭配Unity 使用Google Play 帳款服務程式庫
在Unity 選單列中,依序點選「Assets」(資產) >「Import Package」(匯入套件) >「Custom Package」(自訂套件)。 找出 .unitypackage 檔案的下載位置,然後 ...
#33. Unity AssetBundle 載入後,出現粉紅色區塊的問題與解決
Reference. Unity Manual: Graphics Settings · Unity Forum: Loading assets from assetbundles makes assets appear pink in editor.
#34. What's the recommended workflow to use scripts, models ...
One more thing, every thing I bought in asset store and import via package manager are going under "assets" instead of "packages". Is it not ...
#35. Suggestion: Import Unity assets - Godot Community Forums
A lot of asset packs are set up for Unity specifically, and even if they come with FBX or ... A problem with importing assets from the unity asset store, ...
#36. AR Unity擴增實境實務開發| 誠品線上
... 物件」基本操作2-2 Prefab預製物件2-3 材質球第3章線上資源與燈光3-1 新增場景3-2 Unity Asset Store 線上資源商店3-3 匯入線上資源商店物件第4章Animation動畫4-1 ...
#37. unity必學插件一:NGUI - 維克的煩惱
NGUI是需要收費的,目前Asset Store的售價是95元美金,其實不算貴, ... 完按兩下他會自己import,若是沒自動匯入,請在Unity選單上選Assets=>Import ...
#38. How to use Unity Asset Store - NagareLab
Click “Download” at the bottom right of the window. Unity AssetStore. Source : Unity. How to import assets in Unity software. Import the assets downloaded in ...
#39. 【Unity官方教學分享】專案面板和匯入
專案(Project)是用來管理專案內的所有資源(Assets),專案建立或匯入的資源會存放在本視窗。 點擊左上角生成按鈕(Create),可以在專案中建立資源。
#40. Installation | UniWebView
You could find UniWebView 5 there under My Assets, then click "Import". # UniWebView Store. Besides of Unity Asset Store, we also have our ...
#41. Import Any Asset from Anywhere Into Unity - Coursera
Unity is a powerful engine for developing games and creating environments for ... Use Package Manager to import an asset from the Unity Asset Store.
#42. 新的官方Asset模組開發下載 - Unity Taiwan
1.名字會從"Standard Assets"改為"Sample Assets"。 · 2.匯入的流程不變,但是會改從Asset Store下載安裝,以便於我們更新裡面內容。
#43. Unity Plugin Overview | Ecosystem and Plug-ins
The Substance material will be imported into your Unity project. The sbsar asset will create a main import file and a folder containing the ...
#44. Example 2 - Unity whole scene import - Moviestorm FirstStage
The Unity Asset Store has quite a lot of prebuilt scenes that cover a wide range of genres and styles, but are of very varying quality depending upon their ...
#45. [Using Unity Assets] How to Check if an Asset is Compatible ...
This article explains how to check if an asset from the Unity Asset Store can be used in STYLY.
#46. Unity 外掛開發
本課程將說明如何開發Unity 的外掛工具,課程中 ... Assets Store 上。 ... 匯入完成後,上方的選單會多一個「Asset Store Tools」,請執行「Package ...
#47. How to use Unity Asset Store FBX models in UE4
Just the geometry. It should be possible to buy an asset over at the Unity Store and import the fbx without material into UE and assign new ...
#48. 項目面板和導入- Unity官方教程(The Project Panel and Importing
The Project Panel is where you store · all of the assets that make up your game. · Anything you create with the panel, · and any asset you import, ...
#49. unity入門—資源匯入與場景建立
3.螢幕上會顯示血量、得分等內容. 4.待新增. 資源匯入. 右鍵【Assets】—【Import new Asset】—選擇素材所在資料夾. 或者直接將檔案拖入視窗.
#50. Importing and Using Standard Assets With Unity 2020+
Since Unity 2019, the Standard Assets are no longer part of the Application, and instead, if you are trying to import them, you probably ran ...
#51. Using Unity assets in Unreal and other game engines
It's important to actually import the downloaded asset into a Unity project. This is because, while the asset is downloaded and available on your system, it's ...
#52. Getting started with unity | Game Audio Development with ...
In the next section, we will import a project from the Unity Asset Store. Downloading and importing project assets. One of the really great features of Unity is ...
#53. Release Your First Unity Asset - Chris McCole
Import the asset store tools into your Unity Project. Open up the tools portal, and select the folder that your assets are under.
#54. Unity介面與基本操作
Unity 是一套跨平台遊戲引擎,可開發執行於PC、Mac OS、 ... (Unity Asset Store)。 ... 建立專案時勾選需匯入資源包,例如角色控制器、粒子特.
#55. 8. [Unity 3D 介面- 中文教學] 動態天空教學- Unisky
Unity Asset Store - unisky: https://www.assetstore.unity3d.com/#/content/166 就可幫各位解決這問題唷!!! 1. 匯入unisky.package 至Unity。
#56. VR 與Unity - 小農的家
選擇「Import」My Assets 裡的Sun Temple 模型(如果沒有此模型,先至Unity Asset Store 購買,它是免費的) · 點擊「Import」 · 拖曳至Hierarchy 視窗中.
#57. Publishing an asset on the Unity Asset Store - wafrat
Preserving Dependencies. Upon import, I realized that it did not import Unity.InputSystem automatically. Originally the assembly depends on ...
#58. Cannot open a package from the Unity Asset Store website
Click "My Assets";; Find the desired asset, click Download and then click Import. I still do not understand why clicking "Open in Unity" in the ...
#59. 確認一次購買的發票號- unity3d - 他山教程
教程列表 · SO官方文檔. 資產商店 · 訪問資產商店 · 購買資產 · 匯入資產 · 出版資產 · 確認一次購買的發票號 · StackOverflow 文件 · unity3d 教程 ...
#60. Unity Asset Store資源商店:免費物件、套件、模板應用開發 ...
出版社:博碩文化股份有限公司,作者:Kiee,出版日期:20151005,ISBN:9789864340521,【二手徵求好處多】運用免費官方與個人3D素材庫擴充機能並 ...
#61. Get started | Unity - Google for Developers
A mobile ads SDK for AdMob publishers who are building apps on Unity. ... Select Assets > Import Package > Custom Package and find the ...
#62. Unity Asset Store資源商店:免費物件、套件、模板應用開發教學
書名:Unity Asset Store資源商店:免費物件、套件、模板應用開發教學| 語言:中文繁體| ISBN:9789864340521 | 出版社:博碩文化| 作者:Kieec | 出版日期:2015/10/15 ...
#63. Unity标准资源包,示例项目,Asset Store下载资源本地路径
现在已经更新到2.3功能主要包括: 集中式Unity项目创建功能项目模板添加Asset Store资源商店资源包修改项目构建目标下载地址https://store.unity.com/cn/download?ref ...
#64. Unity (game engine) - Wikipedia
Unity is a cross-platform game engine developed by Unity Technologies, first announced and ... user-generated assets to other game makers via the Unity Asset Store.
#65. Unity範例— Wave VR 5.2.1 documentation
從Assets > Import Package > Custom Package… 匯入wvr_unity_samples.unitypackage。 選擇All components,並點選Import. _images/import_plugin1.png ...
#66. Home | Engine Developer Portal
Import, share, or delete datasets in the new Asset Browser. ... be removing the Book Sample and Rendering Sample from the Unity Asset store in the future.
#67. Unity3D 從Asset Store 下載的資源包路徑 - 茂銓的網路札記
使用Unity3D 開發一定會用到一些素材,這些素材除了自己製作以外,也可以透過Asset Store 商店購買。而隨著時間經過Unity3D 的版本更新以及資源包的 ...
#68. Unity基礎篇:解決Asset Store資源商店點下載或導入沒反應
我們有時候會想從資源商店下載項目或素材,但是發現點擊下載按鈕沒有反應。 雖然不知道怎麼回事,但我們只需要進入自己的願望清單就可以了。
#69. Unity flight simulator script
Mar 16, 2021 · Below is an example of a jet engine 3D model that you can find in Unity Asset's store. Unity Scuffly is a "small" flight simulator where you ...
#70. Beginning 3D Game Development with Unity 4: All-in-one, ...
Assets. Unity was originally designed primarily to create first-person shooters, ... Maya, C4D, or Blender, or taking advantage of Unity's Asset Store, ...
#71. Learn Unity3D Programming with UnityScript: Unity's ...
Unity's JavaScript for Beginners Janine Suvak. Import a Character Model In the Asset Store window, scroll down just a bit until you find the free Zombie ...
#72. Learn Unity 4 for iOS Game Development - 第 106 頁 - Google 圖書結果
The FreeArtskillZ Texture Pack on the Asset Store ... and you'll see the same type of Import window that you saw when importing the built-in Unity assets.
#73. [程式] Unity Asset Bundle 討論- 看板GameDesign - 批踢踢實業坊
AB 就是素材打包後Unity 可以認得的各種資源. ... 約5.6 版本前後,官方也只有在Asset Store 上提供一個插件(而不是內建管理器腳本在引擎中).
#74. Mastering Unity 2017 Game Development with C#: Create ...
The Unity VR package creates two main folders: VRStandardAssets and ... To access the VRTK, simply visit the Unity Asset Store and download and import the ...
#75. Unity 2020 By Example: A project-based guide to building 2D, ...
Tip Many developers offer free assets on the Unity Asset Store from models such as a monster to full-blown games. It's worth exploring the store and adding ...
#76. Unityで神になる本。 - 第 413 頁 - Google 圖書結果
あと Asset Store Level 11 プログラムという Asset 【優待制度】Personal ユーザー向けには月額$19 で公開されます。毎月福袋の中身が更新されて、その中身を見て買う ...
unity asset store匯入 在 [程式] Unity Asset Bundle 討論- 看板GameDesign - 批踢踢實業坊 的推薦與評價
網誌版本:https://wp.me/pBAPd-A2
大綱
基礎概念
程式差異:使用資源的方法
靜態管理器,動態讀檔器
包體的規範
檢查版本
本地包
版本更新流程
variant 功能
檢查下載資源
重複資源
新手教學包
基礎概念
Asset Bundle 是 Unity 的動態媒體包機制 以下簡稱 (AB)
簡單來講 Unity很難直接使用媒體(如貼圖) (實際要用當然可以但是從原始素材到實際使
用的資源有非常多Unity本身的設定要做,很難做的跟先在Unity編好後打包為素材後使用
一樣方便)
打比方說材質設定(Material)是一種Unity的特有資源.這是無法在外部自行製作的.
AB 就是素材打包後 Unity 可以認得的各種資源.
如果不使用 AB. 多半是 使用以下兩種方法來存取資源.
1. 將資源拉到場景物件中,直接使用.
2. 使用 Resource.Load 從 Resources/ 資料夾中讀取.
(1.) 的這種方法當讀入那個場景. 資源就會順帶讀進來. 也就是資源其實包在場景內.
(2.) 的這種方法 其實就可以想像 Resources/ 下的所有東西是一個大的資源包, 會隨著
遊戲本體打包. 而且當遊戲讀入的時候會一併載入(不管有沒有讀取裡面的東西).
AB的目的.除了能夠不更新本體來更換資源之外,很重要一部分就是減少本體的大小.
也就是說正確使用AB必須達到一種效果. AB之內的資源必須 2. 不在 Resources\ 內 1.
不被任何場景所索引. (否則資源已被包入本體,那麼同時使用AB就會有兩份類似的資源)
也就是本體完全不知道有這份資源的存在. 動態透過 AB 取得其中的資源.
程式差異:使用資源的方法
使用 AB 在程式上最大的差異就是從同步處理到非同步處理.
原本直接使用索引或是呼叫 Resources.Load() 因為資源已經讀入在記憶體,
所以可以立即取得資源,而使用 AB 因為原本並非與本體一併讀入的原因,
必須先讀入 AB (資源包),然後再從資源包中讀入資源使用.也就是需要資源的時間點
與能夠使用資源的時間點並不相同(非同步)導致程式碼架構寫作習慣有大大的不同.
對已經完成的系統架構改動起來影響非常巨大.
原本得程式架構可能是
void CreateCharacter()
{
GameObject prefab = Resource.Load(...);
GameObject object = GameObject.Instanciate( prefab );
m_Character = object;
// 然後物件在函式完成已經可以正常使用.
m_Anim = m_Character.AddComponent<AnimScript>();
}
void PlayAnim(...)
{
m_Anim.Play(...);
}
改變成
IEnumerator StartCreateCharacter()
{
StartFetchAB(
...
AsyncFunc( bundle )
{
GameObject prefab = bundle.Load(...);
GameObject object = GameObject.Instanciate( prefab );
m_Character = object;
m_Anim = m_Character.AddComponent<AnimScript>();
// frame B 才產生索引
}
) ;
// frame A 物件在函式完成還沒有出現,無法 使用 m_Character 及 m_Anim
}
void PlayAnim(...)
{
// 如果在 frame B之前呼叫到此函式,則 m_Anim 還未取得腳本
m_Anim.Play(...);
}
又或者因為取得 AB 需要一點時間,導致場景開始時必須等待取得會有數個畫格的空檔,
畫面上會出現沒有正確初始化的畫面.甚至如果特效物件是在 AB 之中,那麼撥放特效的
時間就會延遲.
靜態管理器,動態讀檔器
5.6 版本以前 Unity 的 AB 其實非常陽春.雖然整個流程直到資源取得是可以串起來了
.但是沒有一個官方規範或推薦的機制.也就是說 Unity 官方只提供取得 Bundle 之後
的資源取用,卻沒有規範怎麼打包,取得及管理這些 Bundle.
約 5.6 版本前後,官方也只有在 Asset Store 上提供一個插件(而不是內建管理器腳本
在引擎中).最近的版本才陸續提供了 AB 的一些預覽機制.也就是因為如此,各家工作
室就會自行設計各派別中繼層(同間公司都能有兩三種作法).
中繼層大概會包括打包腳本,一個靜態管理器,負責組織及儲存下載中,已下載的
Bundle.一個動態下載器,負責執行 Coroutine 呼叫網路要求,等待下載(當然也可用
遊戲的腳本來負責下載,下載完檔案再交給管理器,就如同上面闡述了各門各派的問題)
.
打包腳本是一個編輯器腳本(非遊戲腳本,不會打包到遊戲內),簡而言之就是那些檔案
要包到哪個包.是的!大概是2015~2016年之前,哪些檔案要包必須使用者自己建表去打
包.在某一個版本之後官方終於在各資源 inspector 下方加上了一個 assetBundleName
的選擇框.但這段過渡時期也導致了有些仍使用了自訂清單打包的團隊,覺得用官方這時
候提供的選擇框的手動方案十分"不自動化"/"不客製化".
在選擇框決定了各項資源要打包的包體檔案名稱之後,打包腳本最終就會產出 Bundle 的
檔案.
也就是說原本資源
1.) Assets/Texture/ABC.png 原本直接使用索引取得該資源,變成打包到一個檔案
<bundle1> 中的 ABC.png.取得包體讀取時要這樣 <bundle1>.Load("ABC").
2.) Assets/Resources/Weapon/bullet.prefab,原本使用
Resources.Load("Weapon/bullet"),變成打包到一個檔案 <bundle2> 中的
bullet.prefab 讀取時 <bundle2>.Load("bullet").
官方提供的插件除了管理以下載,下載中的物件之外,還有負責組合路徑的功能.因應不
同平台的包體.包體應該會放置在網路上如下:
<url>/<platform>/<bundle1>
<platform>就代表了不同的平台必須使用不同的包體(因不同平台得使用不同的貼圖壓縮
格式,所以不能互通)
如果不使用官方的函式 WWW.LoadFromCacheOrDownload() 來下載,則必須自行下載檔案
,存放在平台可放存檔的位置(Application.streamingAssetsPath 或
application.datapath)然後在使用時再從那些已經存檔的本地路徑讀出那些包體檔案後
使用.
而這些路徑規則在編輯器執行時也要能正常,注意各平台間路徑斜線,以及前墜的差異
file:// https://
補充備註:由於編輯器的執行是在 PC 平台上,他使用的包體應當是 PC 平台.如果使用
到其他平台的包體,有可能會有貼圖錯誤的問題.這點是開發行動遊戲(常常將平台切換
維持在手機平台,或是根本就沒有打 PC 包體來使用)常見會發生的錯誤.
官方提供的插件還有一個值得稱讚的特點,除了在編輯器執行時也能正常下載使用 AB 之
外,還提供了模擬模式,也就使用包體不需要下載,而是直接取得資料夾中的資源的功能
.省去開發時間變更資源後打包的動作(但是決定各資源到哪一包,以及取得下載包及其
中資源的手續還是不能省).
下載包體
不管是使用檔案建表,資料夾建表,還是編輯器選擇,哪些資源要打包在哪一包中個專案
有自己的不同作法.
某些工作室習慣大包體的做法優點是因為網路要求少,這樣下載會快點.但是
缺點之一就是不能分批更新,一次必須全部更新.
缺點之二在於因為資源都在少數包體中,所以一旦必須取得其中一個資源,
就必須把整個包體載入,占用相當大的記憶體(除非頻繁卸載).
缺點之三就是由於大包體一次需下載的檔案大,所以在網路品質不佳的狀況下有可
能會有下載不全失敗變殘檔必須重新下載的問題.
註:這邊特別注意記憶體的使用,包體內(可視為壓縮)算一份,取出來的資源又算一份
.
小而大量的包體的優缺點則相反,網路下載時必須考慮一次發多少個 Request 是最佳化
的問題.太多或太少的 Request 都會造成下載時間過長.
而小到極致一個資源一個包體的作法就是把每個資源的讀取都下載化(非同步),優點是
在取得資源時不用再思考這個資源在哪一包(多半使用資源名稱編碼的方式來決定包體名
稱),但缺點是整個遊戲可能會有幾百到幾千個包體,要特別小心前述下載 Request 的
問題.
最後有一種工作室是使用壓縮及 AB 的混和型.也就是 AB 打包完成後,再透過壓縮方式
把檔案壓成更少數量的包體,然後下載時先下載壓縮包,解壓縮之後放在本地資料夾,然
後取用 AB 時一律透過本地路徑來取得包體.
檢查版本
前面說到 AB 的作用之一就是可以小部分更新,不需要更換本體.也因此更新時會碰到版
本檢查的問題.官方的函式提供了版號及 hash 兩種做法,也就是在
WWW.LoadFromCacheOrDownload() 中指定版號或 hash,如果本地已取得(cache)的包體的
版號比較小,或是 hash 不一致,那麼代表有新檔案,此時 Unity 就會重新下載.否則
優先使用曾取得的包體.然而版號及 hash 要怎麼在呼叫下載前讓 client 知道,這點沒
有規範.
如果是使用 hash 的做法,那麼在打包完成之後必須使用
AssetBundleManifest.GetAssetBundleHash() 來取得個檔案的 hash 值,在遊戲 呼叫下
載之前先取得,然後下載之時就知道應該要抓到的檔案的 hash 值是多少.來做出正確判
斷.
使用版本號的方法也是類似,呼叫 WWW.LoadFromCacheOrDownload() 時依照傳入的版號
,系統記錄此次下載的檔案的版號,下一次呼叫的時候依照傳入的版號來做比較.也就是
說在呼叫該下載函式之前,就必須先知道預期取得的檔案版號為何?
這個版號或 hash 值通常必須透過伺服器在 "取得AB之前" 優先取得算是一個開發上比較
需要注意的地方.
備註:如果還沒有建立 AB 版本控制的開發者,當打包更新了 AB 檔案後,請記得曾下載
的 AB 會 cache 在本機,有可能會發生一直抓不到更新版的問題,這種情況請使用命令
強制清除 cache.
另外,如果是前述下載自訂壓縮包的做法,因為先下載的是壓縮包,所以下載前則自行檢
查之前是否已經有下載過?是否需要再下載?已下載的是哪一個版本?是否要透過網路要
求(request)的更新機制來檢查新版(網頁的規範中,會帶參數來檢查網頁檔案的更新屬
性,讓瀏覽器決定是否會優先用 cache 的頁面)?
而如果對官方的 cache 機制有意見,也可以以類似壓縮包的作法來操作,完全透過自訂
的下載方式下載 AB 檔案到本地端,對其檢查增刪,等檔案正確後才用 Unity 的函式自
本地取得 AB 包體.
本地包
前段落提到先下載包體存放在本地,然後再使用的作法.而關於本地包還有一種作法是
將 AB 包體隨著本體一起打包的作法.這種做法的優點是當玩家從商城下載完成之後,因
為本體內部已經有下載包,所以不需要再花費額外的流量(或時間)從第三方空間下載
AB.(附帶好處就是本地包體的流量算商城的,這就是暗黑兵法)
會出現這種作法的原因是因為某些區域市場,玩家習慣在固定網路的地方先用wifi下
載.等到回家在開始玩的時候不希望再花費數據傳輸費用來下載下載包.本地包的作法同
時增進遊戲的首日留存率,也兼顧更新能力.
前面段落描寫使用 AB 程式的寫作方式不同(同步與非同步),從開發的角度來看,同樣
是本體內含所有資源,使用本地包,然後再更新 AB 的作法會比使用 Resources.Load()
然後再改用 AB 呼叫上比較一致,避免開發中程式使用兩種不同的資源取用方式.
本地包的打包方式就是將要打入本地包的包體(打包完成)放到 Assets/StreamAssets/
資料夾中(而非放在專案外),這樣打包時此資料夾內的檔案會被放到遊戲運行中的
Application.streamingAssetsPath 路徑下.取出本地包的路徑也就與網路包的路徑不相
同.使用本地包必須額外處理不同路徑的問題.(這種做法就很類似前述先下載檔案到本
地再取用的作法)
而由於路徑的不相同,使用 WWW.LoadFromCacheOrDownload() 的版本機制就會失效,因
為兩個不同路徑的檔案被視為不相同的檔案.同時因應本地包的取用,本地包打包的時
候 client 還必須知道本地包的版本.也就是放在本體內的本地版本表.方便取用時檢查
如果本地版本比較高,則優先使用本地包(不下載),如果網路版本比較高,則下載取得
網路包體來使用.
甚麼時候會出現本地版本比較高的情況?接著說明實務上會遇到的版本更新流程.
首先哪個本地版本配上那些包體版本(甚至是伺服器版本)是每個團隊版本更新時必須自
行處理的問題.
理想中 AB 更新的流程是
1. 伺服器進維修
2. 更新 AB 檔案,更新版本表
3. 伺服器開機,玩家重新連上,檢查版本後取得新 AB 包體.
當本體也隨之更新會遇到的問題
1. 本體(帶新版本地包)更新,玩家取得新版本體
2. 玩家使用新版本本體連到舊伺服器(此時會遇到上述本地版本比較高的情形,如果沒
有本地包,則要考慮新版本也要能吃舊包體的相容問題)
3. 伺服器進維修
4. 更新 AB 檔案,更新版本表
5. 伺服器開機,玩家重新連上,檢查版本後判斷是否要取得 AB 包體.(新本體則因為
網路版本一致,所以不需使用網路包,舊本體則因為網路版號更新,所以下載了新版
本)
注意以上這兩種情形的假設是
本體版本會先釋出(因此才要考慮新本體連接到舊伺服器,舊包體的情形)
有維修時間,因此版本更新與 AB 包體檔案的更新對 Client 來說會是同時.
如果是類似 PC 商城(Steam)的更新方式,新版伺服器上線後會讓本體強制更新.
如果沒有維修時間,或是維修時間少到可以忽視,注意 AB 檔案的更新要早於伺服器版本
表更新.如果更新的順序相反.會發生一個情形是:
1. 伺服器版本更新
2. 玩家連入伺服器取得網路 AB 版本為2,但此時實際上的包體其實是1.
3. 網路包體更新
4. 已經 cache 版本 1 的玩家本地端 cache 的版號是2,所以也不會再去檢查更新後的
網路包體.導致一直無法更新新包體的問題.
這種情況建議透過
A) 伺服器版本二次更新,在步驟 3 之後再更新一次伺服器版本進到 3 版這樣即便已經
吃到 2 版版號(卻使用 1 版檔案)的玩家也會再度下載.
B) 使用 hash 來檢查檔案不正確.
實務上放包體的網路空間,也必須要注意 cache 問題.在某些網路空間上,會有 cache
的設定.即便是檔案已經在空間上更新了,本地下載時還是持續拿到舊的檔案,那是因為
下載的過程中被伺服器的 cache 機制提供了舊檔,這時必須強制網路空間清除 cache,
再更新網路版號讓本地端下載新版.一直無法下載到新版的客戶端只好建立清除舊版包體
的機制,或是建議玩家使用安卓才有的清除資料功能.
最後,假設專案必需處理 AB 的相容版本問題(舊本體要用舊包體遊玩,同一時間新本體
使用新包體,新舊包體必須同時存在的情況).那麼伺服器提供的 AB 網址就必須依照不
同的 Client 版本號而不同,此時必須小心新舊包體被視為不同檔案,而累積存在本地
cache 的問題.(這種情形就建議自行管理下載,而不要讓 Unity 依照網址來認下載包
的唯一性)
variant 功能
Unity 的 AB 還有一個比較少人用的 variant 功能.就是可以打成相同名稱但是不同副
檔名的包體.這個 variant 的功能主要是用來製作多國語系,或是在不同情形下的類似
資源.作法也很簡單就是編輯相同名稱標籤,同時加上 variant 的設定即可.最後打包
的時候就會產出這樣的檔案
<Bundle1>.<variant1>
<Bundle1>.<variant2>
<Bundle1>.<variant3>
而下載讀檔的時候,可以自行設定目前使用的 variant 關鍵字,也可以透過插件設定目
前 variant.來達到組合完整 AB 檔案的目的.
檢查下載資源
為了避免使用當下必須等下載的窘境,一般來說在遊戲開始會有資源準備的一段流程,確
保各下載包都能正常取得.
為了在這個流程,透過上述所描述的版本表,本地端就知道有那些下載包要下載.將其全
部下載一遍,並檢查,就完成了資源檢查的流程.
而如同前述,AB 下載的時候是非同步的,要考慮到 WebRequest 同時要發出多少的網路
要求.如果一次請求一個 AB 檔案,則可照表逐個檢查.如果同時發出多個要求,則要追
蹤目前下載中的數量,直到全部檔案都取得為止.當然,如果有 AB 檔案無法完成下載.
系統該怎麼顯示應對?由於並不是每個下載包都必須同時使用,為了避免記憶體的浪費,
下載檢查資源後,是否要針對某些 AB 檔案進行卸載,哪些 AB 檔案在哪些情況不卸載,
哪些 AB 檔案使用完在甚麼情況必須卸載,或是哪些 AB 可以是否要透過靜態索引來儲存
,方便使用.都是專案必須要考慮的細節.
重複資源
如何能知道 Unity 的打包的狀況.其實每次打包的時候 Unity 都會產生 Log.在其中紀
錄打包的資源(甚至本體打包時所引到的素材檔案都會有紀錄.)
而 AB 打包完畢後這些的資訊在哪裡可以取得?答案是在 AB 包體檔案的旁邊會產生相對
應的 .manifest 檔案.裡面就會記錄這個包體內的資源.(有經過包體編輯紀錄的)
備註:manifest 不需要釋出給玩家,在 AB 檔案內已經有那些資訊.
因為本體理論上並不應該知道包體的資訊,各包體之間為獨立也不互相溝通,所以否則如
果沒有妥善規劃 AB 的包體資源,其實有可能會發生重複打包的現象.
打比方說,prefab1 及 prefab2 被分別打包入 bundle1 及 bundle2.查看這
bundle1 及 bundle2 的 manifest 就會分別看到 prefab1 及 prefab2 等資源.
但 Unity 的 prefab 通常是 GameObject,在其下那些 mesh 及 texture 理當被一併打
包進去,方能保證 prefab1 及 prefab2 分別透過不同的包體獨立讀入後都能正常運作.
然而假如 prefab1 及 prefab2 都包含相同的一張 textureA,就會發生一份資源被重複
打包的現象.
解決方式就是,將這種共享的資源也打入特定的包體中,以此為例則是標定 textureA 的
包體為 bundleTexture.
所以最後打包後就會產生:
bundle1
bundle2
bundleTexture
三個包體.而此時如果我們查看 manifest 檔案的內容,則會看到 bundle1 及 bundle2
內引述了 其他的包體 bundleTexture.
而在 Unity 的官方插件的運作中,則會依照這些包體的依存關係,在取得特定包體時,
優先取得其引述依存的包體.進而減少重複資源打包的現象.
新手教學包
上面已說到,AB 的作用之一就是減少本體的大小.但是上述段落也提到,在遊戲開始之
前為了確保遊戲運作順暢,必須先把所有包體下載一遍.(否則會面臨當使用的時候必須
等下載的窘境)隨著遊戲越大,第一次開始遊戲要等待的時間就越久,不利於首日留存.
為了解決這個問題,某些專案就設計了二次下載的流程.這個部份關係到 Unity AB 內的
資源相關性.在此順帶簡單說明.
整個遊戲包含了以下幾個部分:
A) 清除掉所有索引的本體,
B) 新手教學包.使用到部分的素材.如部分的角色.初始要顯示的介面圖片或字型
C) 遊戲資源包.包含基礎素材,如所有的角色.
二次下載遊戲流程如下:
1) 本體開啟,先檢查是否玩家已通過新手教學.
2) 如果已通過新手教學,則直接進入檢查 C) ,檢查完畢就進入正常遊戲流程.
3) 如果未通過新手教學,第一次遊玩,則進入檢查 B) ,檢查完畢開始新手教學.新手
教學完畢後回到 2)
這邊有幾個值得注意的地方.
首先是 玩家資訊 如何取得?是否存在本機端?如果要透過網路取得,那麼本體的腳本就
必須有連網驗證帳號功能.(否則就要把登入畫面包在本體中)
B) C) 兩個包體中如果有重複的資源(如角色) 要怎麼處理?尤其是假如玩家使用舊帳號
在新手機上遊玩,應該要能夠不需要重新執行一次新手教學,也就是可以不需要下載新手
教學這部分的包體.減少下載的流量.
以我看過的某遊戲來說,他們的設計是這樣的.首先帳號的 ID 是由本地隨機產生及提供
給伺服器,本體包含登入介面提供繼承或社交連動等功能.所以進入遊戲後就可以判斷此
帳號是否要進行新手教學.如果是新帳號.那麼這個時候會播放開頭動畫(因此動畫被包
在本體中),在開頭動畫約數十秒的播放時間中,背景會開始下載新手教學包.等到開頭
動畫播放完畢,正常情況新手教學包已經下載完畢.無縫接軌進入新手教學.新手教學是
一個事先設計好能互動但沒有太多選擇看似正常的流程,譬如說只有一種特技.當新手教
學進行的時候,背景則開始下載完整的遊戲下載包.新手教學結束的時則可以開始正常遊
戲.
理想中,開頭動畫播放如果沒有被中斷,玩家是看不到下載條棒(檢查資源)的畫面.新
手教學的長度如果不足於全部下載包下載的時間長度,則新手教學結束的時候還會有一段
時間可以看到下載條棒(檢查資源)的畫面.
總結
到此為止,以上談論的架構大致上涵蓋了使用 AB 會遇到的議題.但是我想 Unity 編輯
器的版本一直在推進.也有越來越多的函式庫及工具不斷出現.也有更多團隊設計出更優
秀的框架及規範.本文拋磚引玉,希望在這個議題上稍加討論.
--
"May the Balance be with U"(願平衡與你同在)
遊戲設計教學,討論,分享。歡迎來信。
黑水溝歷史文庫 https://ndark.wordpress.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 94.59.223.186
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1554821355.A.448.html
... <看更多>