从零开始创建Unity自定义包Package:一步一步实现您的功能

这篇具有很好参考价值的文章主要介绍了从零开始创建Unity自定义包Package:一步一步实现您的功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

内容将会持续更新,有错误的地方欢迎指正,谢谢!
 

从零开始创建Unity自定义包Package:一步一步实现您的功能
     
TechX 坚持将创新的科技带给世界!

拥有更好的学习体验 —— 不断努力,不断进步,不断探索
TechX —— 心探索、心进取!

助力快速掌握 Package 自定义包的实现

为初学者节省宝贵的学习时间,避免困惑!


前言:

  在Unity中,自定义包(Package)是一种出色的方法,可以将代码、资源和功能打包,方便地在不同项目之间共享和分发。本篇博客将逐步学习如何从零开始创建一个自定义的Unity包,以满足开发需求。

TechX 教程效果:

unity 添加本地package,Unity知识点,unity,游戏引擎,c#



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轻松地将包的内容集成到项目中,而无需手动管理文件。


unity 添加本地package,Unity知识点,unity,游戏引擎,c#

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知识点,unity,游戏引擎,c#

创建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。
unity 添加本地package,Unity知识点,unity,游戏引擎,c#

2、在包的根目录下创建 package.json 文件
unity 添加本地package,Unity知识点,unity,游戏引擎,c#

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、等)来组织您的资源和脚本。

unity 添加本地package,Unity知识点,unity,游戏引擎,c#

  • 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文件夹:如果为其他开发者提供使用示例,在其中添加演示场景、脚本和资源

unity 添加本地package,Unity知识点,unity,游戏引擎,c#



5、更新CHANGELOG.md


在包根目录下创建一个名为CHANGELOG.md的文件,用于记录每个新版本的变更、新功能和错误修复。

unity 添加本地package,Unity知识点,unity,游戏引擎,c#


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...选择包。

unity 添加本地package,Unity知识点,unity,游戏引擎,c#


TechX —— 心探索、心进取!

每一次跌倒都是一次成长

每一次努力都是一次进步

END

感谢您阅读本篇博客!希望这篇内容对您有所帮助。如果您有任何问题或意见,或者想要了解更多关于本主题的信息,欢迎在评论区留言与我交流。我会非常乐意与大家讨论和分享更多有趣的内容。

如果您喜欢本博客,请点赞和分享给更多的朋友,让更多人受益。同时,您也可以关注我的博客,以便及时获取最新的更新和文章。

在未来的写作中,我将继续努力,分享更多有趣、实用的内容。再次感谢大家的支持和鼓励,期待与您在下一篇博客再见!
文章来源地址https://www.toymoban.com/news/detail-765269.html

到了这里,关于从零开始创建Unity自定义包Package:一步一步实现您的功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一步一步学OAK之三:实现RGB相机场景切换

    创建新建3-rgb-scene文件夹 用vscode打开该文件夹 新建一个main.py 文件 安装依赖前需要先创建和激活虚拟环境,我这里已经创建了虚拟环境OAKenv,在终端中输入cd…退回到OAKenv的根目录,输入 OAKenvScriptsactivate 激活虚拟环境 安装pip依赖项: 在main.py中导入项目需要的包

    2024年02月11日
    浏览(54)
  • Android一步一步教你实现Emoji表情键盘

    背景: 说到聊天,就离不开文字、表情和图片,表情和图片增加了聊天的趣味性,让原本无聊的文字瞬间用表情动了起来,今天给大家带来的是表情键盘,教你一步一步实现,先来看下效果图: 效果图 功能: 1、如何控制表情键盘与输入法的切换 2、如何解析表情 3、如何处

    2024年02月16日
    浏览(42)
  • 一步一步学OAK之七:通过OAK相机实现特征跟踪

    特征跟踪,也称为目标跟踪或点跟踪,是指在序列图像中追踪物体或者场景中的特定特征点的过程。特征点可以是具有独特性质的像素,如角点、边缘、纹理等。通过跟踪这些特征点,可以在连续图像帧中确定它们的位置、速度和运动轨迹。 在计算机视觉和图像处理中,特征

    2024年02月12日
    浏览(57)
  • 一步一步学OAK之六:通过OAK相机实现特征检测

    特征检测是指在数字图像中自动寻找并定位具有特定特征的图像区域或图像点。这些特征可以是在图像中具有独特外观、结构或统计特性的对象、边缘、角点、纹理等。 特征检测在计算机视觉中起到至关重要的作用,它是许多计算机视觉任务的基础,如目标检测、跟踪、姿态

    2024年02月11日
    浏览(49)
  • 一步一步学OAK之五:通过OAK相机实现边缘检测

    边缘检测是计算机视觉和图像处理中的一种基本技术,用于识别图像中物体和图像中不同区域之间的边界或轮廓。边缘是图像中具有明显灰度或强度变化的区域,通常表示不同物体、纹理或形状之间的边界。 边缘检测算法通过分析图像中像素的灰度值或强度变化情况,以找到

    2024年02月12日
    浏览(44)
  • Python + OpenCV一步一步地实现图像拼接(原理与代码)

    图像拼接可以理解为三大步: 按顺序读取多幅图像,并保证图像按照从左到右的顺序。 发现这些图像像素之间的相关性(涉及到 单应性 )。 将这些图像拼接成为一张全景图像。 首先,需要了解如下几个概念。 Python OpenCV SIFT特征提取的原理与代码实现_乔卿的博客-CSDN博客

    2024年02月04日
    浏览(76)
  • 一步一步学OAK之十一:实现在RGB相机上进行对象跟踪

    这里我们用到了mobilenet-ssd_openvino_2021.4_6shave.blob模型文件,需要下载并存储到本地文件夹,不会下载的小伙伴可以看我前面的博客,里面有介绍,这里直接使用,不介绍下载过程了。 创建新建13-object-tracker-on-rgb文件夹 用vscode打开该文件夹 新建一个main.py 文件 安装依赖前需要

    2024年02月13日
    浏览(54)
  • 一步一步学OAK之十三:实现RGB相机上的空间对象跟踪

    前面我们实现了在RGB相机上进行物体的对象跟踪,能够实时跟踪我们想要追踪的物探,但是,如果我们要想知道这个物体的三维空间坐标,该如何实现呢?要想实现这个功能,我们需要用到DepthAI API提供的MobileNetSpatialDetectionNetwork节点和ObjectTracker节点,现在我们来实现它。 这

    2024年02月12日
    浏览(40)
  • VS2019配置opencv4.6.0手把手一步一步实现

    引言:配置环境真是让人痛苦不堪,踩了无数个坑,网上的文章五花八门,完全不知道参考哪个,直接劝退。为了能顺利配置,此处进行记录,以后可以回过头来看,也分享给大家。 我提供了两种方法配置,一种是针对于一个项目配置,一种是针对所有需要配置opencv的项目。

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包