内容将会持续更新,有错误的地方欢迎指正,谢谢!
拥有更好的学习体验 —— 不断努力,不断进步,不断探索 |
助力快速掌握 Package 自定义包的实现 为初学者节省宝贵的学习时间,避免困惑! |
前言:
在Unity中,自定义包(Package)是一种出色的方法,可以将代码、资源和功能打包,方便地在不同项目之间共享和分发。本篇博客将逐步学习如何从零开始创建一个自定义的Unity包,以满足开发需求。
TechX 教程效果:
1、UPM(Unity Package Manager)和包(Package)
1、Package Manager(包管理器)
Unity Package Manager是Unity官方提供的一套工具,用于管理Unity项目中的各种包。它具有以下功能:
1、分发和更新功能:Package Manager可以快速、轻松地分发和更新Unity项目中的功能、工具和资源。
2、共享可重用组件:可以使用Package Manager来发现、共享和使用可重用的组件,这些组件可以加速开发过程。
3、项目依赖关系:Package Manager能够定义项目之间的依赖关系,解决依赖关系并下载必要的包,以确保项目能够正确运行。
4、可扩展性:通过使用Package Manager,可以将Unity扩展为一个可扩展的开放平台,允许开发人员共享他们的创意和解决方案。
5、集成到项目中:可以使用Package Manager轻松地将包的内容集成到项目中,而无需手动管理文件。
2、Package(包)
在Unity中,一个包(Package)是一组代码、资源和功能的集合,可以作为单元被添加到项目中。包可以包含以下内容:
1、C#脚本和程序集:可以将自己的C#脚本和程序集添加到包中,以便在项目中使用。
2、原生插件:如果需要使用原生代码(如C++)与Unity交互,可以将原生插件添加到包中。
3、模型、纹理、动画和音频剪辑等资源:可以将任何类型的资源添加到包中,以供项目使用。
4、包清单文件:每个包都包含一个包清单文件,其中包含有关包的信息,如名称、版本、依赖关系和存储库URL。
5、测试:为确保包在不同情况下都能按预期工作,可以编写测试并将其添加到包中。
6、CHANGELOG.md文件:在每次发布新版本时更新CHANGELOG.md文件,以记录新增功能和错误修复。
2、创建Package包的要求
1、包清单文件(package.json)
每个Unity Package都必须包含一个名为package.json的清单文件。这个文件包含了有关包的元信息,如名称、版本、依赖项等。以下是一些package.json中的常见字段:
- name:包的名称,必须是小写字母且不含空格。
- displayName:包的展示名称
- version:包的版本号。
- unity:指定此包适用的Unity版本。
- unityRelease:Unity的发布版本。
- description:包的描述。
- keywords:包的关键词。
- 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、文件结构:
包的文件结构应该遵循Unity Package的布局约定。这将确保包可以正确导入到其他项目中,并且可以在Unity Package Manager中正常工作。
创建Unity Package时,包的文件结构布局非常重要,它决定了包在导入到其他项目中时的组织和使用方式。以下是一个典型的Unity Package的文件结构布局详细说明:
1.、包根目录:
- Unity Package的所有文件和文件夹都会位于一个根目录下。这个根目录的名称通常是包的名称,用小写字母表示,不包含空格。
2、package.json:
- 这是包的清单文件,包含有关包的元信息,如名称、版本、依赖项等。它必须位于包的根目录下。
3、Documentation文件夹(可选):
-这是包的说明文件夹Documentation,可以在其中添加Markdown或HTML文件,以便其他开发者了解如何使用包。
4、Editor文件夹(可选):
- 如果包包含一些只在编辑器中使用的功能,可以创建一个名为Editor的文件夹。在这里放置的脚本将只在Unity编辑器环境中执行。
5、Runtime文件夹(可选):
- 如果包包含在游戏运行时使用的功能,可以创建一个名为Runtime的文件夹。这里的脚本将在游戏运行时执行。
6、scripts文件夹(可选):
- 如果包包含一些通用的C#脚本,可以创建一个名为Scripts的文件夹,并将脚本放置在其中。这可以帮助更好地组织代码。
7、Resources文件夹(可选):
- 如果包包含一些资源文件,如纹理、模型、声音等,可以创建一个名为Resources的文件夹,并将资源文件放置在其中。这些资源可以通过Resources.Load函数在运行时加载。
8、Prefabs文件夹(可选):
- 如果包包含一些预制体,可以创建一个名为Prefabs的文件夹,并将预制体放置在其中。
9、Scenes文件夹(可选):
- 如果包包含一些场景文件,可以创建一个名为Scenes的文件夹,并将场景文件放置在其中。
10、Editor Default Resources文件夹(可选):
- 如果包包含在编辑器中使用的资源,例如图标、样式等,可以创建一个名为Editor Default Resources的文件夹,并将资源放置在其中。
11、Tests文件夹(可选):
- 如果为包编写了测试,可以创建一个名为Tests的文件夹,并将测试相关的文件和脚本放置在其中。Tests/Editor用于编辑器测试,Tests/Runtime用于运行时测试。
12、Examples文件夹(可选):
- 如果为其他开发者提供使用示例,可以创建一个名为Examples的文件夹,并在其中添加演示场景、脚本和资源。
3、CHANGELOG.md文件
为了方便用户了解每个版本的变化,建议在每次发布新版本时更新CHANGELOG.md文件。在文件中记录新增功能、改进和错误修复。
4、合适的命名
给包起一个合适的名称,这将有助于其他开发者理解包的用途和内容。名称应该简洁明了,能够表达出包的主要功能或特点。
5、版本管理
在package.json中正确管理您的包的版本号。每次对包进行更改或添加新功能时,都应该适当地更新版本号,以便其他开发者可以知道何时有新的更新可用。
6、文档
为包编写文档,包括如何安装、如何使用以及包含的功能和资源的说明。好的文档可以帮助其他开发者更容易地使用您的包。
3、创建Package包
1 、Embeded Package
Embeded Package 嵌入式包是直接在Unity项目中创建的包,以子文件夹的形式存在于项目的Packages目录下。以下是嵌入式包的具体步骤:
1、在工程文件的Packages文件夹下创建一个文件夹作为包的根目录,文件夹的名称为包的展示名称(不是包的名称),假设包的展示名称为Test Package。
2、在包的根目录下创建 package.json 文件
3、填写 package.json 的信息
{
"name": "com.techx.testpackage", //包名称全部小写
"displayName": "Test Package", //包的展示名
"version": "0.0.1", //包的版本号
"unity": "2018.3", //Unity版本
"unityRelease": "0f1", //Unity发布版本
"description": "This is Test Package", //包的描述
"keywords": ["Test","Package"], //包的关键词
"author": "TechX", //包的作者
"dependencies":[], //包的依赖
"samples": [], //包的示例
}
2 、Local Package
本地路径包是指您在计算机上任意位置创建的包,然后在其他项目的 manifest.json 文件中指定包的本地文件路径就可以了。
鉴于创建包的时候需要Unity的工程项目,我们首先在Unity项目中开发包,在包开发完成后把文件夹拖出放到指定的存储位置;
本地包和嵌入式包的创建方式是一样的,只是位置不同和加载包的方式不同而已。
4、开发Package包
确保包的文件结构布局符合Unity的包布局约定。根据需要,创建适当的文件夹(如Editor、Runtime、Tests、等)来组织您的资源和脚本。
- Editor文件夹:
1、包含一些只在编辑器中使用的功能,在这里放置的脚本将只在Unity编辑器环境中执行
2、在Editor文件添加Unity.TestPackage.Editor.asmdef文件
- Runtime文件夹:
1、包含在游戏运行时使用的功能,这里的脚本将在游戏运行时执行。
2、在Editor文件添加Unity.TestPackage.asmdef文件
- Tests文件夹:
1、如果为包编写了测试,将测试相关的文件和脚本放置在其中。Tests/Editor用于编辑器测试,Tests/Runtime用于运行时测试。
2、在Tests/Editor文件添加Unity.TestPackage.Editor.Tests.asmdef文件
3、在Tests/Runtime文件添加Unity.TestPackage.Tests.asmdef文件
- Examples文件夹:如果为其他开发者提供使用示例,在其中添加演示场景、脚本和资源
5、更新CHANGELOG.md
在包根目录下创建一个名为CHANGELOG.md的文件,用于记录每个新版本的变更、新功能和错误修复。
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...选择包。
文章来源:https://www.toymoban.com/news/detail-765269.html
每一次跌倒都是一次成长 每一次努力都是一次进步 |
感谢您阅读本篇博客!希望这篇内容对您有所帮助。如果您有任何问题或意见,或者想要了解更多关于本主题的信息,欢迎在评论区留言与我交流。我会非常乐意与大家讨论和分享更多有趣的内容。
如果您喜欢本博客,请点赞和分享给更多的朋友,让更多人受益。同时,您也可以关注我的博客,以便及时获取最新的更新和文章。
在未来的写作中,我将继续努力,分享更多有趣、实用的内容。再次感谢大家的支持和鼓励,期待与您在下一篇博客再见!文章来源地址https://www.toymoban.com/news/detail-765269.html
到了这里,关于从零开始创建Unity自定义包Package:一步一步实现您的功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!