【工具插件类教学】UnityPackageManager私人定制资源工具包

news2024/10/3 0:28:08

目录

一.UnityPackageManager的介绍

二.package包命名

三.包的布局

四.生成清单文件

五.制作package内功能

六.为您的软件包撰写文档

1.信息的结构

2.文档格式

七.提交上传云端仓库

1.生成程序集文件

2.上传至云端仓库

八.下载使用package包

1.获取包的云端路径

2.在unity内添加包

3.使用测试包

4.更新包


一.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内重新导入这个包的连接就行了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/380189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arduino IDE启动闪退或者运行中闪退

文章目录一、你中了哪一种&#xff1f;1、安装了不符合规格的库文件2、安装了不符合规范的开发板库文件二、解决方案1、轻方案2、全盘重来Arduino IDE启动闪退或者运行中闪退&#xff0c;出现这样的问题&#xff0c;其实不需要思考了&#xff0c;就是运行库配置的问题&#xff…

clion在linux设置桌面启动图标(jetbrains全家桶均适用)

clion在linux设置桌面启动图标&#xff08;jetbrains全家桶均适用&#xff09; 网上大部分步骤都只是pycharm的教程&#xff0c;其实对于jetbrains全家桶都适合&#xff0c;vs code编辑器也可以这样。 刚开始是使用pycharm在linux设置的教程&#xff0c;参照&#xff1a;http…

计算机组成原理4小时速成3:存储器,主存ROM,RAM,cache高速缓存,辅存外设,地址编址方案,汉明码检错纠错

计算机组成原理4小时速成3&#xff1a;存储器&#xff0c;主存ROM,RAM&#xff0c;cache高速缓存&#xff0c;辅存外设&#xff0c;地址编址方案&#xff0c;汉明码检错纠错 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;…

CSS-Grid(网格)布局

前言 之前HTML 页面的布局基本上都是通过 Flexbox 来实现的&#xff0c;能轻松的解决复杂的 Web 布局。 现在又出现了一个构建 HTML 最佳布局体系的新竞争者。就是强大的CSS Grid 布局。 grid和flex区别是什么&#xff1f;适用什么场景&#xff1f; Flexbox 是一维布局系统&am…

js几种对象创建方式

适用于不确定对象内部数据方式一&#xff1a;var p new Object(); p.name TOM; p.age 12 p.setName function(name) {this.name name; }// 测试 p.setName(jack) console.log(p.name,p.age)方式二&#xff1a; 对象字面量模式套路&#xff1a;使用{}创建对象&#xff0c;同…

chatgpt 到底颠覆了什么 第一部分

ChatGPT一出来&#xff0c;一堆搞NLP的立马哭了。为什么&#xff1f;不该问为什么哭&#xff0c;而该问为什么还不哭。 有两个立马大哭的理由。 第一个理由很多人说了&#xff0c;范式改变。 虽然说没有哪个研究领域&#xff0c;甚至没有哪个领域敢说自己真的是天道酬勤绝对公平…

自己第一次在虚拟机完整部署ssm项目心得体会

过程使用资源和博文 琳哥发的linux课件文档,阳哥发的linux课件文档(私聊我要) https://www.likecs.com/show-205274015.html https://www.cnblogs.com/aluoluo/articles/15845183.html https://blog.csdn.net/osfipin/article/details/54405445 https://blog.csdn.net/drea…

【封装xib补充 Objective-C语言】

一、那么首先,咱们就从这个结果来分析 1.就不给大家一步一步分析了,直接分析我们这里怎么想的, 首先,我们看到这样的一个界面,我们想,这些应用数据是不是来源于一个plist文件吧, 所以说,我们首先要,第一步,要懒加载,把这个plist文件中的数据,加载起来, 那么,因…

超详细MySQL(免安装版)安装与配置

一、MySQL下载 首先打开MySQL官网&#xff0c;官网首页地址为 MySQL官网首页地址 进入官网后如下图所示&#xff0c;点击DOWNLOADS进入下载页面 下滑页面找到MySQL Community&#xff08;GPL&#xff09;Downloads>>并点击 接下来点击MySQL Community Server 若想要安…

C语言数组【详解】

数组1. 一维数组的创建和初始化1.1 数组的创建1.2 数组的初始化1.3 一维数组的使用1.4 一维数组在内存中的存储2. 二维数组的创建和初始化2.1 二维数组的创建2.2 二维数组的初始化2.3 二维数组的使用2.4 二维数组在内存中的存储3. 数组越界4. 数组作为函数参数4.1 冒泡排序函数…

java 学习3(数组)

java ——数组 ✍作者&#xff1a;电子科大不知名程序员 &#x1f332;专栏&#xff1a;java学习指导 各位读者如果觉得博主写的不错&#xff0c;请诸位多多支持&#xff1b;如果有错误的地方&#xff0c;欢迎在评论区指出 数组是一组相同类型元素按一定顺序排列的集合 数组相…

[MatLab]变量与数据结构

在开始工程之前&#xff0c;需要先指定工程目录&#xff0c;按住下图红框按钮进行选择。 Matlab分为编辑器和命令窗口&#xff0c;编辑器用来编写代码文件&#xff0c;而命令窗口可以实时交互。 在窗口中输入clc即可清除命令窗口&#xff1b;clear all可以清除工作区中所有变量…

【论文笔记】Long Tail Learning via Logit Adjustment

摘要 Our techniques revisit the classic idea of logit adjustment based on the label frequencies, either applied post-hoc to a trained model, or enforced in the loss during training. Such adjustment encorages a large relative margin between logits of rare …

项目管理系统的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;企业项目管理系统是为了使企业项目能够按照预定的成本、进度、质量顺利完成&#xff0c;而对人员、产品、过程和项目进行分析和管理的活动&#xff0c;系统主要包括项目基本信息操作、项目规划管理&#xff0c;合同管理&#xff0c…

一步一步教你如何使用 Visual Studio Code 编译一段 C# 代码

以下是一步一步教你如何使用 Visual Studio Code 编写使用 C# 语言输出当前日期和时间的代码&#xff1a; 1、下载并安装 .NET SDK。您可以从 Microsoft 官网下载并安装它。 2、打开 Visual Studio Code&#xff0c;并安装 C# 扩展。您可以在 Visual Studio Code 中通过扩展菜…

VMware NSX 4.1 发布 - 网络安全虚拟化平台

请访问原文链接&#xff1a;VMware NSX 4 - 网络安全虚拟化平台&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org VMware NSX 提供了一个敏捷式软件定义基础架构&#xff0c;用来构建云原生应用程序环境。NSX 专注于为具有异…

【SPSS】两配对样本T检验分析详细操作教程(附案例实战)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【微服务】-认识微服务

目录 1.1 单体、分布式、集群 单体 分布式 集群 1.2 系统架构演变 1.2.1 单体应⽤架构 1.2.2 垂直应⽤架构 1.2.3 分布式架构 1.2.4 SOA架构 1.2.5 微服务架构 1.3 微服务架构介绍 微服务架构的常⻅问题 1.4 SpringCloud介绍 1.4.1 SpringBoot和SpringCloud有啥关…

【Flutter入门到进阶】Flutter基础篇---介绍与环境

1 Flutter介绍 Flutter是谷歌公司开发的一款开源、免费的UI框架&#xff0c;可以让我们快速的在Android和iOS上构建高质量 App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux等。 Flutter基于谷歌的dart语言&#…

NLTK与StanfordNLP工具包结合使用

(一) 概述 1.NLTK NLTK是一款著名的python自然语言处理工具包&#xff0c;其内收集了NLP领域大量的公开数据集以及常用模型&#xff0c;涵盖了分词&#xff0c;词性标注&#xff0c;命名实体识别&#xff0c;句法分析&#xff0c;依存分析等各种NLP领域的子任务。 2.Stanfor…