当前位置: 首页 > news >正文

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

目录

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

相关文章:

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

目录 一.UnityPackageManager的介绍 二.package包命名 三.包的布局 四.生成清单文件 五.制作package内功能 六.为您的软件包撰写文档 1.信息的结构 2.文档格式 七.提交上传云端仓库 1.生成程序集文件 2.上传至云端仓库 八.下载使用package包 1.获取包的云端路径 …...

【软件测试】2023年了还不会接口测试?老鸟总结接口测试面试谁还敢说我不会......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 测试面试&#xff0…...

类Vuex轻量级状态管理实现

引用自 摸鱼wiki 1. vuex vuex是一个前端广泛流行的状态管理库&#xff0c;主要由以下几大模块组成&#xff1a; state&#xff1a;状态存储getter&#xff1a;属性访问器mutation&#xff1a;可以理解为一个同步的原子性事务&#xff0c;修改state状态action&#xff1a;触发…...

Java 基本数据类型

Java基本数据类型是Java编程语言中最基本的数据类型&#xff0c;包括整型、浮点型、字符型、布尔型和空类型。本文将详细介绍Java基本数据类型的作用和在实际工作中的用途。 整型&#xff08;int、long、short、byte&#xff09; 整型是Java中最常见的基本数据类型&#xff0…...

全网资料最全Java数据结构与算法-----算法分析

算法分析 研究算法的最终目的就是如何花更少的时间&#xff0c;如何占用更少的内存去完成相同的需求&#xff0c;并且也通过案例演示了不同算法之间时间耗费和空间耗费上的差异&#xff0c;但我们并不能将时间占用和空间占用量化&#xff0c;因此&#xff0c;接下来我们要学习…...

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

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

linux + jenkins + svn + maven + node 搭建及部署springboot多模块前后端服务

linux搭建jenkins 基础准备 linux配置jdk、maven&#xff0c;配置系统配置文件 vi /etc/profile配置jdk、maven export JAVA_HOME/usr/java/jdk1.8.0_261-amd64 export CLASSPATH.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport MAVEN_H…...

VBA之正则表达式(41)-- 快速标记两个星号之后的字符

实例需求&#xff1a;工作表中的数据保存在A列~G列&#xff0c;现需要识别D列中包含超过两个星号的内容&#xff0c;并将第3个星号及其之后的字符设置为红色字体&#xff0c;如图所示。 示例代码如下。 Sub Demo1()Dim objRegExp As ObjectDim objMatch As ObjectDim strMatch…...

VMware16安装MacOS【详细教程】

安装VMware workstation 双击安装包&#xff0c;然后一直下一步就行了。 进行VMware安装&#xff0c;一直 下一步 在输入产品密钥这一步&#xff0c;如果有查找到可用密钥就填进去&#xff0c;没有就跳过&#xff0c;进入软件后也能输入密钥的。 输入密钥。 最后一步&#xff…...

Netty学习(一):Netty概述

一、原生NIO存在的问题 NIO 的类库和API繁杂&#xff0c;使用麻烦:需要熟练掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。需要具备其他的额外技能:要熟悉Java 多线程编程&#xff0c;因为NIO编程涉及到Reactor 模式&#xff0c;你必须对多线程和网络编程…...

【论文精读】Benchmarking Deep Learning Interpretability in Time Series Predictions

【论文精读】Benchmarking Deep Learning Interpretability in Time Series Predictions Abstract Saliency methods are used extensively to highlight the importance of input features in model predictions. These methods are mostly used in vision and language task…...

自己第一次在虚拟机完整部署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…...

操作系统权限提升(二十二)之Linux提权-SUDO滥用提权

系列文章 操作系统权限提升(十八)之Linux提权-内核提权 操作系统权限提升(十九)之Linux提权-SUID提权 操作系统权限提升(二十)之Linux提权-计划任务提权 操作系统权限提升(二十一)之Linux提权-环境变量劫持提权 SUDO滥用提权 SUDO滥用提权原理 sudo是linux系统管理指令&…...

操作系统权限提升(二十四)之Linux提权-明文ROOT密码提权

系列文章 操作系统权限提升(十八)之Linux提权-内核提权 操作系统权限提升(十九)之Linux提权-SUID提权 操作系统权限提升(二十)之Linux提权-计划任务提权 操作系统权限提升(二十一)之Linux提权-环境变量劫持提权 操作系统权限提升(二十二)之Linux提权-SUDO滥用提权 操作系统权限…...

Linux基本命令复习-面试急救版本

1、file 通过探测文件内容判断文件类型&#xff0c;使用权是所有用户&#xff0c; file[options]文件名2、mkdir/rmdir 创建文件目录&#xff08;文件夹&#xff09;/删除文件目录 3、grep 指定文件中搜索的特定内容 4、find 通过文件名搜索文件 find name 文件名 5、ps 查…...

随想录二刷Day09——字符串

文章目录字符串1. 反转字符串2. 反转字符串 II3. 替换空格4. 反转字符串中的单词5. 左旋转字符串字符串 1. 反转字符串 344. 反转字符串 思路&#xff1a; 设置两个指针&#xff0c;分别指向字符串首尾&#xff0c;两指针向中间移动&#xff0c;内容交换。 class Solution { …...

正点原子IMX6ULL开发板-liunx内核移植例程-uboot卡在Starting kernel...问题

环境 虚拟机与Linux版本&#xff1a; VMware 17.0.0 Ubuntu16 NXP提供的U-boot与Linux版本&#xff1a; u-boot:uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 linux:linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2 开发板&#xff1a; 正点原子-IMX6ULL_EMMC版本&#xff0c;底板版…...

使用手工特征提升模型性能

本文将使用信用违约数据集介绍手工特征的概念和创建过程。 通过对原始数据进行手工的特征工程&#xff0c;我们可以将模型的准确性和性能提升到新的水平&#xff0c;为更精确的预测和更明智的业务决策铺平道路&#xff0c; 可以以前所未有的方式优化模型并提升业务能力。 原始…...

【运维有小邓】Oracle数据库审计

一些机构通常将客户记录、信用卡信息、财务明细之类的机密业务数据存储在Oracle数据库服务器中。这些数据存储库经常因为内部安全漏洞和外部安全漏洞而受到攻击。对这类敏感数据的任何损害都可能严重降低客户对机构的信任。因此&#xff0c;数据库安全性对于任何IT管理员来说都…...

JDK下载安装与环境

&#x1f972; &#x1f978; &#x1f90c; &#x1fac0; &#x1fac1; &#x1f977; &#x1f43b;‍❄️&#x1f9a4; &#x1fab6; &#x1f9ad; &#x1fab2; &#x1fab3; &#x1fab0; &#x1fab1; &#x1fab4; &#x1fad0; &#x1fad2; &#x1fad1;…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...