工具插件类教学UnityPackageManager私人定制资源工具包
Posted 幻世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工具插件类教学UnityPackageManager私人定制资源工具包相关的知识,希望对你有一定的参考价值。
目录
一.UnityPackageManager的介绍
Unity Package Manager 是 Unity 官方的包管理系统,使用 Package Manager 可以定义项目依赖项,解析包依赖关系,根据需要下载和添加包,以及将内容集成到项目中。具备以下功能:
1.允许 Unity 快速轻松地分发新功能以及更新现有功能。
2.为用户提供一个发现和共享可重用组件的平台。
3.将 Unity 提升为可扩展的开放平台。
其中package包可以包含以下内容:
- C# 脚本
- 程序集
- 原生插件
- 模型、纹理、动画和音频剪辑以及其他资源。
其他有关UMP的详细介绍请移步官网:https://docs.unity.cn/cn/2019.4/Manual/PackagesList.html
二.package包命名
1.一个包有两个名称:正式名称和显示名称,前者用于注册包,后者是用户在 Editor 中看到的面向用户的名称。
2.显示名称应简短,但应在一定程度上表明包中的内容。除此以外,Unity Package Manager 对显示名称没有任何限制。
3.正式名称必须遵循 Unity Package Manager 命名约定,也就是使用反向域名表示法。名称必须满足以下条件:
4.以 <域名扩展>.<公司名称>(例如,com.example 或 net.example)开头,即使公司或网站名称以数字开头也是如此。
5.如果您希望正式名称显示在编辑器中,则长度不能超过 50 个字符。如果包名称不需要出现在编辑器中,则 Unity Package Manager 会将名称长度限制为不超过 214 个字符。
6.只能包含小写字母、数字、连字符 (-)、下划线 (_) 和句点 (.)
7.要指示嵌套的命名空间,请为命名空间添加一个句点作为后缀。例如,“com.unity.2d.animation”和“com.unity.2d.ik”。
正确命名后即可在Unity工程的Assets文件夹下创建当前命名的文件夹,之后的代码和美术素材都会放在下面
三.包的布局
包的布局包括以下模块:编辑器,实时,测试,案例,文档
包内的官方布局如下,也就是说包内的规范文件夹层级和分类可以按照官方的案例设置,当然了这个也不是唯一的,只是更加全面方便他人学习查看。https://docs.unity.cn/cn/current/Manual/cus-layout.html
<root>
├── package.json
├── README.md
├── CHANGELOG.md
├── LICENSE.md
├── Third Party Notices.md
├── Editor
│ ├── [company-name].[package-name].Editor.asmdef
│ └── EditorExample.cs
├── Runtime
│ ├── [company-name].[package-name].asmdef
│ └── RuntimeExample.cs
├── Tests
│ ├── Editor
│ │ ├── [company-name].[package-name].Editor.Tests.asmdef
│ │ └── EditorExampleTest.cs
│ └── Runtime
│ ├── [company-name].[package-name].Tests.asmdef
│ └── RuntimeExampleTest.cs
├── Samples~
│ ├── SampleFolder1
│ ├── SampleFolder2
│ └── ...
└── Documentation~
└── [package-name].md
位置 | 描述 |
---|---|
package.json | 包清单,定义了包的依赖项和其他元数据。 |
README.md | 开发者包文档。通常来说,这是文档,可帮助那些想要修改包或想要在包主源代码仓库中推送更改的开发者。 |
CHANGELOG.md | 对于包更改的描述,按照相反的时间顺序列示。最好使用标准格式,比如保留变更日志 (Keep a Changelog)。 |
LICENSE.md | 包含包许可证文本。通常,Package Manager 将从所选的 SPDX 列表网站复制文本。 |
Editor/ | 特定于 Editor 平台的 Assets 文件夹。与 Assets 下的 Editor 文件夹不同,这只是一个约定,不会影响资源导入管线。请参阅程序集定义和包以在此文件夹中正确配置特定于 Editor 的程序集。 |
Runtime/ | 特定于运行时平台的 Assets 文件夹。这只是一个约定,不会影响资源导入管线。请参阅程序集定义和包以在此文件夹中正确配置运行时程序集。 |
Tests/ | 用来存储包中所有包含的测试的文件夹。 |
Tests/Editor/ | 特定于 Editor 平台的测试文件夹。请参阅程序集定义和包以在此文件夹中正确配置特定于 Editor 的测试程序集。 |
Tests/Runtime/ | 特定于运行时平台的测试。请参阅程序集定义和包以在此文件夹中正确配置运行时测试程序集。 |
Samples~/ | 用来存储包中所有包含的示例的文件夹。 |
Documentation~ | 用来存储包中所有包含的文档的文件夹。 |
四.生成清单文件
具体的文件模板如下,里面主要包含了包名,版本,显示名字,描述信息,依赖项,关键词,作者信息等数据,用户可以根据实际情况按需填写
https://docs.unity.cn/cn/2021.3/Manual/upm-manifestPkg.htmlpackage.json清单文件的编写规范参考官方介绍:https://docs.unity.cn/cn/2021.3/Manual/upm-manifestPkg.html
"name": "com.[company-name].[package-name]",
"version": "1.2.3",
"displayName": "Package Example",
"description": "This is an example package",
"unity": "2019.1",
"unityRelease": "0b5",
"documentationUrl": "https://example.com/",
"changelogUrl": "https://example.com/changelog.html",
"licensesUrl": "https://example.com/licensing.html",
"dependencies":
"com.[company-name].some-package": "1.0.0",
"com.[company-name].other-package": "2.0.0"
,
"keywords": [
"keyword1",
"keyword2",
"keyword3"
],
"author":
"name": "Unity",
"email": "unity@example.com",
"url": "https://www.unity3d.com"
五.制作package内功能
这里用其中一个模块功能做演示(Unity内Object的扩展工具)
#region 模块信息
// **********************************************************************
// Copyright (C) 幻世界
// Please contact me if you have any questions
// File Name: ObjectExtension
// Author: 幻世界
// **********************************************************************
#endregion
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace HSJFramework
public static class ObjectExtension
#region GameObject相关扩展
public static GameObject Show(this GameObject selfObj)
selfObj.SetActive(true);
return selfObj;
public static GameObject Hide(this GameObject selfObj)
selfObj.SetActive(false);
return selfObj;
public static GameObject Name(this GameObject selfObj, string name)
selfObj.name = name;
return selfObj;
public static GameObject Layer(this GameObject selfObj, int layer)
selfObj.layer = layer;
return selfObj;
public static void DestroySelf(this GameObject selfObj, float t = 0)
GameObject.Destroy(selfObj, t);
#endregion
六.为您的软件包撰写文档
大多数软件包都需要某种形式的注解,以帮助用户获得最佳体验并优化其使用。本页面提供了一些有关如何结构化信息和格式化文档提示。
1.信息的结构
在软件包的标题之后,您应为软件包的功能和/或它包含的内容提供基本的概述。在概述之后,包括安装说明以及任何系统要求和/或限制。您还可以提供获取帮助和提供反馈的链接,包括公共论坛或知识库以及帮助中心联系人。
在获得这些初步信息之后,您可以提供更深入的工作流程、用户界面描述或示例目录列表,以及更高级的主题。最好在最后提供参考页。
部分 | 描述 |
---|---|
概述 | 提供该软件包的简要、高层次的描述。 |
软件包内容 | 包括您希望用户知道的重要文件的位置。例如,如果这是一个示例包,各个示例分别包含了纹理、模型和材质,您可能需要提供每个组的文件夹位置。 |
安装说明 | 您可以提供指向官方的 Package Manager 安装说明的链接,但是如果您有任何特殊的安装需求,比如安装示例,可以在这里添加。 |
要求 | 这是添加硬件或软件要求合适的位置,包括此软件包与哪些版本的 Unity 编辑器兼容。 |
限制 | 如果您的软件包有任何已知限制,可在此处列出。如果没有限制,或者限制是微不足道的,可去除此部分。 |
工作流程 | 包括用户可以轻松遵循的步骤列表,以演示如何使用该功能。您可以包含屏幕截图来帮助描述如何使用该功能。 |
高级主题 | 您可以在此处提供有关要向用户提供的内容的详细信息。如果您不希望用户一开始就面对太多信息,这是理想的选择。 |
参考 | 如果您的用户界面具有很多属性,则可以在参考部分中提供详细信息。使用表格是快速访问特定属性描述的好方法。 |
示例 | 对于包含示例文件的软件包,您可以包含有关用户如何在其项目和场景中使用这些示例文件的详细信息。 |
教程 | 如果您想为复杂程序提供演练,您也可以在此处添加。使用分步说明,并包含可以帮助用户理解的图像。 |
2.文档格式
Markdown 是一种软件包中常用的轻量级格式。许多代码仓库托管服务(例如 GitHub 和 Bitbucket)都支持该格式的自述文件和文档站点。您可以在软件包根目录下的“Documentation~”文件夹中提供一个 MD 文件,用户在 Unity Package Manager 的详细信息窗格中单击 View documentation 的链接时,默认 MD 查看器将打开该文件。
七.提交上传云端仓库
1.生成程序集文件
在提交包之前我们要在当前包的下生成一个程序集,程序集的存放路径要根据包的布局规则来处理,如果存在Editor和RunTime或者其他的 分类模块那每个模块下都需要创建对应的程序集,我这里默认只有一个Runtime模块所以只生成一个程序集即可,我的包结构如下简单明了 。
2.上传至云端仓库
有的人使用GitHub,也有的人使用Gitee,我这里使用的Gitee,不管使用什么流程都是一样的,用户通过git或者svn亦或其他工具把当前工程提交即可
八.下载使用package包
1.获取包的云端路径
复制并编辑当前包的云端路径:
https://gitee.com/Gitee用户名/当前仓库名.git?path=/Assets/HSJExample/Other/com.hsj.object_extension#master
2.在unity内添加包
在unity的packagemanager界面通过git连接添加包体,把我们刚才编辑的地址放进去,然后就可以添加了
添加成功后这个包就会被当前项目使用了
3.使用测试包
测试代码:
private void Start()
gameObject.Show().Name(name);
this.Position(Vector3.one);
this.Position<MonoBehaviour>(Vector3.one).Rotation(Quaternion.identity);
4.更新包
然后就可以愉快的玩耍了,如果有更新把更新过的内容直接提交即可记得修改版本号,之后在unity内重新导入这个包的连接就行了
以上是关于工具插件类教学UnityPackageManager私人定制资源工具包的主要内容,如果未能解决你的问题,请参考以下文章
互动教学经验-如何完美转换PPT课件为白板互动课件(动画转换)
『Python开发实战菜鸟教程』工具篇:手把手教学使用VSCode开发Python
『Python开发实战菜鸟教程』工具篇:手把手教学使用VSCode开发Python
『Python开发实战菜鸟教程』工具篇:手把手教学使用VSCode开发Python