內(nèi)容將會持續(xù)更新,有錯誤的地方歡迎指正,謝謝!
?
擁有更好的學(xué)習(xí)體驗 —— 不斷努力,不斷進步,不斷探索 |
助力快速掌握 Package 自定義包的實現(xiàn) 為初學(xué)者節(jié)省寶貴的學(xué)習(xí)時間,避免困惑! |
前言:
??在Unity中,自定義包(Package)是一種出色的方法,可以將代碼、資源和功能打包,方便地在不同項目之間共享和分發(fā)。本篇博客將逐步學(xué)習(xí)如何從零開始創(chuàng)建一個自定義的Unity包,以滿足開發(fā)需求。
TechX 教程效果:
1、UPM(Unity Package Manager)和包(Package)
1、Package Manager(包管理器)
Unity Package Manager是Unity官方提供的一套工具,用于管理Unity項目中的各種包。它具有以下功能:
1、分發(fā)和更新功能:Package Manager可以快速、輕松地分發(fā)和更新Unity項目中的功能、工具和資源。
2、共享可重用組件:可以使用Package Manager來發(fā)現(xiàn)、共享和使用可重用的組件,這些組件可以加速開發(fā)過程。
3、項目依賴關(guān)系:Package Manager能夠定義項目之間的依賴關(guān)系,解決依賴關(guān)系并下載必要的包,以確保項目能夠正確運行。
4、可擴展性:通過使用Package Manager,可以將Unity擴展為一個可擴展的開放平臺,允許開發(fā)人員共享他們的創(chuàng)意和解決方案。
5、集成到項目中:可以使用Package Manager輕松地將包的內(nèi)容集成到項目中,而無需手動管理文件。
2、Package(包)
在Unity中,一個包(Package)是一組代碼、資源和功能的集合,可以作為單元被添加到項目中。包可以包含以下內(nèi)容:
1、C#腳本和程序集:可以將自己的C#腳本和程序集添加到包中,以便在項目中使用。
2、原生插件:如果需要使用原生代碼(如C++)與Unity交互,可以將原生插件添加到包中。
3、模型、紋理、動畫和音頻剪輯等資源:可以將任何類型的資源添加到包中,以供項目使用。
4、包清單文件:每個包都包含一個包清單文件,其中包含有關(guān)包的信息,如名稱、版本、依賴關(guān)系和存儲庫URL。
5、測試:為確保包在不同情況下都能按預(yù)期工作,可以編寫測試并將其添加到包中。
6、CHANGELOG.md文件:在每次發(fā)布新版本時更新CHANGELOG.md文件,以記錄新增功能和錯誤修復(fù)。
2、創(chuàng)建Package包的要求
1、包清單文件(package.json)
每個Unity Package都必須包含一個名為package.json的清單文件。這個文件包含了有關(guān)包的元信息,如名稱、版本、依賴項等。以下是一些package.json中的常見字段:
- name:包的名稱,必須是小寫字母且不含空格。
- displayName:包的展示名稱
- version:包的版本號。
- unity:指定此包適用的Unity版本。
- unityRelease:Unity的發(fā)布版本。
- description:包的描述。
- keywords:包的關(guān)鍵詞。
- author:包的作者。
- dependencies:包的依賴項,指定其他包的版本。
- samples:包的示例。
- documentationUrl:包的說明文檔。
{
"name": "com.companyname.packagename",
"displayName": "Package Name",
"version": "0.0.1-prerelease",
"unity": "2018.3",
"unityRelease": "0f1",
"description": "This is Test Package",
"keywords": ["Test","Package"],
"author": "TechX",
"dependencies":["com.unity.nuget.newtonsoft-json": "2.0.0"],
"samples": [
{
"displayName": "Cinemachine Example Scenes",
"description": "Sample scenes illustrating various ways to use Cinemachine",
"path": "Samples~/Cinemachine Example Scenes"
}
],
"documentationUrl": "https://docs.unity3d.com/Packages/com.unity.cinemachine@2.9/manual/index.html",
}
2、文件結(jié)構(gòu):
包的文件結(jié)構(gòu)應(yīng)該遵循Unity Package的布局約定。這將確保包可以正確導(dǎo)入到其他項目中,并且可以在Unity Package Manager中正常工作。
創(chuàng)建Unity Package時,包的文件結(jié)構(gòu)布局非常重要,它決定了包在導(dǎo)入到其他項目中時的組織和使用方式。以下是一個典型的Unity Package的文件結(jié)構(gòu)布局詳細說明:
1.、包根目錄:
- Unity Package的所有文件和文件夾都會位于一個根目錄下。這個根目錄的名稱通常是包的名稱,用小寫字母表示,不包含空格。
2、package.json:
- 這是包的清單文件,包含有關(guān)包的元信息,如名稱、版本、依賴項等。它必須位于包的根目錄下。
3、Documentation文件夾(可選):
-這是包的說明文件夾Documentation,可以在其中添加Markdown或HTML文件,以便其他開發(fā)者了解如何使用包。
4、Editor文件夾(可選):
- 如果包包含一些只在編輯器中使用的功能,可以創(chuàng)建一個名為Editor的文件夾。在這里放置的腳本將只在Unity編輯器環(huán)境中執(zhí)行。
5、Runtime文件夾(可選):
- 如果包包含在游戲運行時使用的功能,可以創(chuàng)建一個名為Runtime的文件夾。這里的腳本將在游戲運行時執(zhí)行。
6、scripts文件夾(可選):
- 如果包包含一些通用的C#腳本,可以創(chuàng)建一個名為Scripts的文件夾,并將腳本放置在其中。這可以幫助更好地組織代碼。
7、Resources文件夾(可選):
- 如果包包含一些資源文件,如紋理、模型、聲音等,可以創(chuàng)建一個名為Resources的文件夾,并將資源文件放置在其中。這些資源可以通過Resources.Load函數(shù)在運行時加載。
8、Prefabs文件夾(可選):
- 如果包包含一些預(yù)制體,可以創(chuàng)建一個名為Prefabs的文件夾,并將預(yù)制體放置在其中。
9、Scenes文件夾(可選):
- 如果包包含一些場景文件,可以創(chuàng)建一個名為Scenes的文件夾,并將場景文件放置在其中。
10、Editor Default Resources文件夾(可選):
- 如果包包含在編輯器中使用的資源,例如圖標、樣式等,可以創(chuàng)建一個名為Editor Default Resources的文件夾,并將資源放置在其中。
11、Tests文件夾(可選):
- 如果為包編寫了測試,可以創(chuàng)建一個名為Tests的文件夾,并將測試相關(guān)的文件和腳本放置在其中。Tests/Editor用于編輯器測試,Tests/Runtime用于運行時測試。
12、Examples文件夾(可選):
- 如果為其他開發(fā)者提供使用示例,可以創(chuàng)建一個名為Examples的文件夾,并在其中添加演示場景、腳本和資源。
3、CHANGELOG.md文件
為了方便用戶了解每個版本的變化,建議在每次發(fā)布新版本時更新CHANGELOG.md文件。在文件中記錄新增功能、改進和錯誤修復(fù)。
4、合適的命名
給包起一個合適的名稱,這將有助于其他開發(fā)者理解包的用途和內(nèi)容。名稱應(yīng)該簡潔明了,能夠表達出包的主要功能或特點。
5、版本管理
在package.json中正確管理您的包的版本號。每次對包進行更改或添加新功能時,都應(yīng)該適當?shù)馗掳姹咎?,以便其他開發(fā)者可以知道何時有新的更新可用。
6、文檔
為包編寫文檔,包括如何安裝、如何使用以及包含的功能和資源的說明。好的文檔可以幫助其他開發(fā)者更容易地使用您的包。
3、創(chuàng)建Package包
1 、Embeded Package
Embeded Package 嵌入式包是直接在Unity項目中創(chuàng)建的包,以子文件夾的形式存在于項目的Packages目錄下。以下是嵌入式包的具體步驟:
1、在工程文件的Packages文件夾下創(chuàng)建一個文件夾作為包的根目錄,文件夾的名稱為包的展示名稱(不是包的名稱),假設(shè)包的展示名稱為Test Package。
2、在包的根目錄下創(chuàng)建 package.json 文件
3、填寫 package.json 的信息
{
"name": "com.techx.testpackage", //包名稱全部小寫
"displayName": "Test Package", //包的展示名
"version": "0.0.1", //包的版本號
"unity": "2018.3", //Unity版本
"unityRelease": "0f1", //Unity發(fā)布版本
"description": "This is Test Package", //包的描述
"keywords": ["Test","Package"], //包的關(guān)鍵詞
"author": "TechX", //包的作者
"dependencies":[], //包的依賴
"samples": [], //包的示例
}
2 、Local Package
本地路徑包是指您在計算機上任意位置創(chuàng)建的包,然后在其他項目的 manifest.json 文件中指定包的本地文件路徑就可以了。
鑒于創(chuàng)建包的時候需要Unity的工程項目,我們首先在Unity項目中開發(fā)包,在包開發(fā)完成后把文件夾拖出放到指定的存儲位置;
本地包和嵌入式包的創(chuàng)建方式是一樣的,只是位置不同和加載包的方式不同而已。
4、開發(fā)Package包
確保包的文件結(jié)構(gòu)布局符合Unity的包布局約定。根據(jù)需要,創(chuàng)建適當?shù)奈募A(如Editor、Runtime、Tests、等)來組織您的資源和腳本。
- Editor文件夾:
??1、包含一些只在編輯器中使用的功能,在這里放置的腳本將只在Unity編輯器環(huán)境中執(zhí)行
??2、在Editor文件添加Unity.TestPackage.Editor.asmdef文件
- Runtime文件夾:
??1、包含在游戲運行時使用的功能,這里的腳本將在游戲運行時執(zhí)行。
??2、在Editor文件添加Unity.TestPackage.asmdef文件
- Tests文件夾:
??1、如果為包編寫了測試,將測試相關(guān)的文件和腳本放置在其中。Tests/Editor用于編輯器測試,Tests/Runtime用于運行時測試。
??2、在Tests/Editor文件添加Unity.TestPackage.Editor.Tests.asmdef文件
??3、在Tests/Runtime文件添加Unity.TestPackage.Tests.asmdef文件
- Examples文件夾:如果為其他開發(fā)者提供使用示例,在其中添加演示場景、腳本和資源
5、更新CHANGELOG.md
在包根目錄下創(chuàng)建一個名為CHANGELOG.md的文件,用于記錄每個新版本的變更、新功能和錯誤修復(fù)。
6、引入Package包
在工程中引入本地包的方式:
-
修改manifest.json文件
1、打開工程Packages文件夾中的manifest.json文件。
2、將包的路徑添加到manifest.json文件中。
{
"dependencies": {
"com.techx.testpackage": "file:../UPM/Test Package",
}
}
-
通過Unity Package Manager添加包
1、在Unity的主菜單欄中依次點Window > Package Manager打開包管理器。
2、點擊包管理器左上角的+號,選擇Add package from disk...選擇包。
文章來源:http://www.zghlxwxcb.cn/news/detail-765269.html
每一次跌倒都是一次成長 每一次努力都是一次進步 |
感謝您閱讀本篇博客!希望這篇內(nèi)容對您有所幫助。如果您有任何問題或意見,或者想要了解更多關(guān)于本主題的信息,歡迎在評論區(qū)留言與我交流。我會非常樂意與大家討論和分享更多有趣的內(nèi)容。
如果您喜歡本博客,請點贊和分享給更多的朋友,讓更多人受益。同時,您也可以關(guān)注我的博客,以便及時獲取最新的更新和文章。
在未來的寫作中,我將繼續(xù)努力,分享更多有趣、實用的內(nèi)容。再次感謝大家的支持和鼓勵,期待與您在下一篇博客再見!文章來源地址http://www.zghlxwxcb.cn/news/detail-765269.html
到了這里,關(guān)于從零開始創(chuàng)建Unity自定義包Package:一步一步實現(xiàn)您的功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!