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

news/2024/4/29 7:11:56/文章来源:https://blog.csdn.net/qq_37310110/article/details/129075778

目录

一.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.luyixian.cn/news_show_75920.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 企业级项目实战:认识 Spring Boot

Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发&#xff0c;升职加薪&#xff0c;快人一步。。「Vue3 企业级项目实战」由程序员十三撰写&#xff0c;2744人购买https://s.juejin.cn/ds/S2RkR9F/ 越来越流行的 Spring Boot Spr…

NJ+SCU42做Modbus RTU从站

NJSCU42做Modbus RTU从站实验时间&#xff1a;2023.2.28 硬件设备&#xff1a;NJ501-1300&#xff0c;CJ1W-SCU42 软件&#xff1a;Sysmac Studio&#xff0c;Commix串口调试助手 案例简介&#xff1a;发送Modbus RTU命令读取NJ里的数据 1. 系统概述 264 ​ 本次实验使用C…

回暖!“数”说城市烟火气背后

“人间烟火气&#xff0c;最抚凡人心”。在全国各地政策支持以及企业的积极生产运营下&#xff0c;经济、社会、生活各领域正加速回暖&#xff0c;“烟火气”在城市中升腾&#xff0c;信心和希望正在每个人心中燃起。 发展新阶段&#xff0c;高效统筹经济发展和公共安全&#…

[文件操作] File 类的用法和 InputStream, OutputStream 的用法

能吃是不是件幸福的事呢 文章目录前言1. 文件的相关定义2. 文件类型3. Java对文件系统的操作3.1 对文件的基础操作3.2 读文件3.3 写文件前言 从这章开始,我们就开始学文件操作相关的知识了~ 1. 文件的相关定义 1.文件的定义可以从狭义和广义两个方面解释. 狭义: 指硬盘上的文…

进程、线程、协程详解

目录 前言&#xff1a; 一、进程 进程的概念 进程内存空间 二、线程 线程的定义 内核线程 用户线程 内核线程和用户线程的比较 线程的状态 三、协程 协程的定义 协程序相对于线程优势 运用场景 四、线程、协程、进程切换比较 前言&#xff1a; 有时候无法…

原生JS实现拖拽排序

拖拽&#xff08;这两个字看了几遍已经不认识了&#xff09; 说到拖拽&#xff0c;应用场景不可谓不多。无论是打开电脑还是手机&#xff0c;第一眼望去的界面都是可拖拽的&#xff0c;靠拖拽实现APP或者应用的重新布局&#xff0c;或者拖拽文件进行操作文件。 先看效果图&am…

人力资源管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;在当今的信息化社会&#xff0c;为了更有效率地工作&#xff0c;人们充分利用现在的电子信息技术&#xff0c;在办公室架设起办公服务平台&#xff0c;将人力资源相关信息统一起来管理&#xff0c;帮助管理者有效组织降低成本和加速…

测试2年,当初一起入行的朋友很多月薪20k了,自己却还没过万,到底差在了哪里?

说来奇怪&#xff0c;不管是读书还是工作&#xff0c;都存在一个现象&#xff0c;那就是人比人&#xff0c;比死人。读书的时候&#xff0c;不管是老师还是家长口中&#xff0c;总会有一个“别人家的孩子”。同样&#xff0c;到工作中&#xff0c;领导口中总会有一个“别人的员…

代码随想录算法训练营day46 | 动态规划之背包问题 139.单词拆分

day46139.单词拆分1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp[i]139.单词拆分 题目链接 解题思路&#xff1a;单词就是物品&#xff0c;字符串s就是背包&#xff0c;单词能否组成字符串s&#xff0c;就是问物品能不能把背包装满。…

【微服务】-认识微服务

目录 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有啥关…

高压放大器知识科普介绍

高压放大器是一种用于放大高压信号的电子设备&#xff0c;具有高压输出&#xff0c;低噪声&#xff0c;高精度&#xff0c;高稳定性&#xff0c;高可靠性&#xff0c;低功耗&#xff0c;低成本等的优点&#xff0c;所以才被广泛应用在磁场探测、电磁脉冲放大、电磁波放大、电磁…

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

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

(Trie Tree)字典树

&#xff08;Trie Tree&#xff09;字典树 场景&#xff1a;在n个字符串中查找某个字符串。 暴力匹配&#xff0c;时间复杂度为O&#xff08;nm&#xff09;&#xff0c;m为字符串平均长度&#xff0c;效率过低。 字典查找单词"fly"&#xff0c;首先查找’f’,然后…

HACKTHEBOX——Teacher

nmapnmap -sV -sC -p- -T4 -oA nmap 10.10.10.153nmap只发现了对外开放了80端口&#xff0c;从http-title看出可能是某个中学的官网http打开网站确实是一个官网&#xff0c;查看每个接口看看有没有可以利用的地方发现了一个接口&#xff0c;/images/5.png&#xff0c;但是响应包…

【计算机二级python】综合题目

计算机二级python真题 文章目录计算机二级python真题题目一&#xff1a;全球大学排名题目二&#xff1a;红楼梦题目一&#xff1a;全球大学排名 在省略号处填写一行或多行代码&#xff0c;完成如下功能‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪…

web,h5海康视频接入监控视频流记录三(后台node取流)

前端vue&#xff0c;接入ws视频播放 云台控制 &#xff0c;回放预览&#xff0c;都是需要调对应的海康接口。相当于&#xff0c;点击时&#xff0c;请求后台写好的接口&#xff0c;接口再去请求海康的接口 调用云台控制是&#xff0c;操作一次&#xff0c;不会自己停止&#x…

SpringBoot+Nacos+OpenFeign环境搭建

目录 1.boot方式nacos与openFeign集成 1.引入依赖 2.添加配置 3.测试接口调用 4.常见问题&#xff1a; 1.版本依赖 2.nacos客户端 2.cloud方式nacos与openFeign集成 1.引入依赖 2.添加配置 3.接口定义 4.开启FeignClients客户端 5.远程接口测试 6.Nacos配置中心 1…

【谷粒学院】微信扫码登录(199~206)

199.OAuth2介绍 OAuth2是什么&#xff1f; OAuth2是针对特定问题的一种解决方案 主要可以解决两个问题&#xff1a;开放系统间授权、分布式访问问题 一、OAuth2解决什么问题 1、OAuth2提出的背景 照片拥有者想要在云冲印服务上打印照片&#xff0c;云冲印服务需要访问云存储服…

算法训练营 day63 单调栈 下一个更大元素II 接雨水

算法训练营 day63 单调栈 下一个更大元素II 接雨水 下一个更大元素II 503. 下一个更大元素 II - 力扣&#xff08;LeetCode&#xff09; 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的…

Jenkins(二):Jenkins插件安装

目录 一、Jenkins汉化 二、配置Jenkins插件 一、Jenkins汉化 1、登录进Jenkins&#xff0c;点击“Manage Jenkins”菜单&#xff0c;选择“Manage Plugins”。 2、点击“Available plugins”&#xff0c;搜索“Chinese”,然后点击“立即下载&#xff0c;安装后重启”。 二、…