codecamp

Unity 创建自定义包

Unity Package Manager 是 Unity 官方的包管理系统。具备以下功能:

  • 允许 Unity 快速轻松地分发新功能以及更新现有功能。
  • 为用户提供一个发现和共享可重用组件的平台。
  • 将 Unity 提升为可扩展的开放平台。

You can use the Package Manager to define project dependencies, resolve package dependencies, download and add packages as needed, and integrate content in your projects.

有关包的简介以及 Unity Package Manager 工作方式的一般信息,请参阅文档。

概述

包可以包含以下内容:

  • C# 脚本
  • 程序集
  • 原生插件
  • Models, Textures, animation and audio clips, and other assets.

每个包还包含一个包清单文件,其中包含诸如包名称、其版本、其依赖项列表以及其存储库 URL 之类的信息。

要创建新包,请执行以下操作:

1.使用下列其中一种方法来为包创建一个空 shell:

* [设置嵌入式包](#EmbedMe)。
* [设置本地包](#LocalMe)。

  1. Implement your tools, libraries, and any assets your package requires.

3.确保包的布局遵循 Unity 包的包布局约定

4.向包添加测试。测试对于确保包在不同情况下能够按预期工作至关重要:

* 将所有 Editor 测试写入 `Tests/Editor` 中。
* 将所有 Playmode 测试写入 `Tests/Runtime` 中。

5.重命名并更新程序集定义文件

6.每次发布新版本时,您都可以更新 CHANGELOG.md 文件。每个新功能或错误修复都应在此文件中包含跟踪。有关所选变更日志格式的更多详细信息,请参阅保留变更日志 (Keep a Changelog) 文档。

对于未共享的包,这是可选的操作,但对于共享的包,强烈建议这样做,以便用户知道哪个版本最符合他们的需求。

7.可以在 LICENSE.mdTHIRD PARTY NOTICES.md 文件中包含许可证和第三方声明

对于未共享的包,这是可选的操作,但对于共享的包,强烈建议这样做,以免用户滥用您的包或违反任何第三方许可证的要求。

8.共享包。

创建新的嵌入式包

Follow these instructions if you want to create a custom package inside your project folder.

  1. Open the Unity Hub, and create an empty project on your computer.

You can also use an existing project on your computer, and embed the package under your project or install the package from a local folder. However, starting with a new project makes the package contents less prone to errors.

  1. Using your computer’s file manager (for example the Windows File Explorer or the macOS Finder), navigate to your project folder and locate the Packages subfolder.

  1. Create a new subfolder for your package inside the Packages folder using a name that matches the package name. For example, if your package is called com.example.mypackage, the subfolder should also be called com.example.mypackage.

Note: This is particularly important if your package contains assets, because the AssetDatabase looks for an asset path that matches Packages/<your-package-name>/Assets, regardless of what the actual folder is called.

4.打开所选的文本编辑器,然后创建一个名为 package.json 的 JSON 文件。

5.将这个文件保存在您创建的新包根文件夹下面。

6.填写包清单 (package.json) 文件中的所有必填字段。

重新打开 Unity 时,新包会显示在 Package Manager 窗口中和 Project 窗口中,可以在其中查看和修改包内容。如果在 Project 窗口中选择 package.json 文件,则也可以直接在 Inspector 窗口中修改其内容。

创建新的本地包

Follow these instructions if you want to create a custom package outside your project folder:

1.使用计算机的文件管理器(例如 Windows 文件资源管理器或 macOS Finder),为包创建一个文件夹。

如果已经为包创建了一些内容,则也可以使用现有位置。

2.确保您的文件夹结构的布局遵循 Unity 包的包布局约定。例如,如果具有 Editor 库和 Runtime 库,请确保将它们存储在 EditorRuntime 文件夹下。

3.打开所选的文本编辑器,然后创建一个名为 package.json 的 JSON 文件。

4.将这个文件保存在包根文件夹下。

5.填写包清单 (package.json) 文件中的所有必填字段。

  1. In Unity, create a new project or open an existing project.

7.打开 Packages 窗口,然后使用刚刚创建的 package.json 文件,按照安装本地包的说明操作。

新包会显示在 Package Manager 窗口中和 Project 窗口中,可以在其中查看和修改包内容。如果在 Project 窗口中选择 package.json 文件,则也可以直接在 Inspector 窗口中修改其内容。

Unity 项目清单
使用Unity
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Unity 包

Unity 的 Package Manager

Unity Configuration

Unity Package Manage 窗口

Unity 查找包

Unity 添加和移除包

Unity 检查包

Unity 包的脚本API

Unity Resolution and conflict

Unity 项目清单

Unity 故障排除

Unity 创建自定义包

Unity 包清单

使用Unity

安装 Unity

Unity 许可证和激活

启动 Unity

Unity Upgrading Unity

Unity Legacy Upgrade Guides

升级到 Unity 5.4

升级到 Unity 5.0

Unity 的界面

Unity Scene 视图

Unity 游戏对象定位

Unity Inspector 窗口

Unity 资源工作流程

Unity 使用 Asset Store

Unity 资源数据库

Unity AssetBundle

Unity 脚本与资源

Unity 创建游戏玩法

Uinty 场景

Unity Scene Templates

Unity 游戏对象

Unity 原始对象和占位对象

Unity 预制件

Unity 层

Unity 约束

Unity 发布构建

Unity 编辑器功能

Unity Project Settings

Unity 版本控制

无标题文章

Unity 基于文本的场景文件

Unity 扩展编辑器

无标题文章

Uinty Profiler overview

Uinty The Profiler window

Uinty 了解 Unity 中的优化

Unity 导入

Unity 导入模型

Unity Model Import Settings 窗口

Unity Rig 选项卡

UnityAnimation 选项卡

Unity SpeedTree Import Settings 窗口

Unity 在 Unity 外部创建资源

Unity 输入

Unity 移动设备输入

Unity 2D

Unity 精灵

Unity Sprite Editor

Unity 精灵图集

Unity 主精灵图集和变体精灵图集

Unity 准备要分发的精灵图集

Unity Tilemap

Unity Tilemap workflow

Unity 在瓦片地图上绘制

Unity 等距瓦片地图

Unity 可编程瓦片

Unity 可编程画笔

Unity 2D 物理系统参考

Unity 2D 碰撞体

Unity 2D 关节

Unity 2D 效应器

Unity 图形

Unity 渲染管线

Unity 内置渲染管线

Unity 内置渲染管线中的渲染路径

Unity 可编程渲染管线

Unity 摄像机

Unity 摄像机技巧

Unity 遮挡剔除

Unity 摄像机参考

Unity 光照

Unity 光源

Unity 光源

Unity 光照模式

Unity Cookies (filename: Cookies.md)

Unity 阴影

Unity Lighting Settings Asset

Unity 光照模式

Unity Light Explorer 窗口

Unity 光照贴图

Unity 渐进光照贴图程序

Unity 光照贴图 UV

Unity 使用 Enlighten(已弃用)的实时全局光照

Unity 光照探针

Unity 反射探针

Unity 预计算的光照数据

Unity 网格、材质、着色器和纹理

Unity 网格组件

Unity 文本网格

Unity 程序化网格几何体

Unity 创建和使用材质

Unity 纹理

Unity 导入纹理

Unity Texture compression formats

Unity 编写着色器

Unity 标准着色器

Unity 材质参数

Unity 旧版着色器

Unity 普通着色器系列

Unity 透明着色器系列

Unity 透明镂空着色器系列

Unity 自发光着色器系列

Unity 反光着色器系列

Unity 着色器参考

Unity 编写表面着色器

Unity 编写顶点和片元着色器

Unity ShaderLab 语法

ShaderLab:SubShader

Unity 高级 ShaderLab 主题

Unity 粒子系统

Unity 创建环境

Unity 天空

Unity 视觉效果组件

Unity 高级渲染功能

Unity 优化图形性能

Unity 颜色空间

Unity 图形教程

Unity 物理系统

Unity Scripting

Unity Setting Up SCripting Environment

Unity Scripting concepts

Unity Important Classes

Unity architecture

Unity Overview of .NET in Unity

Unity Scripting backends

Unity Code reloading in the Unity Editor

Unity 脚本序列化

Unity Script compilation

Unity Assembly definitions

Unity 多玩家和联网

Unity 音频

Unity 动画

Unity 用户界面 (UI)

Unity 导航和寻路

Unity 服务

Unity Setting up your project for Unity services

Unity Organizations

Unity Analytics

Unity Analytics Dashboard

Unity Analytics 事件

Unity 自定义事件

Unity Remote Settings

Unity 在 Unity 项目中使用 Remote Settings

Unity 变现

Unity 升级 Unity Analytics

Unity Analytics 和欧盟一般数据保护条例 (GDPR)

Unity Cloud Build

Unity Cloud Content Delivery

Unity IAP

Unity 设置 Unity IAP

Unity 跨平台指南

Unity 应用商店指南

Unity 实现应用商店

Unity 应用商店模块

Unity Collaborate

Unity XR

Unity 单通道立体渲染(双宽渲染)

Unity XR SDK

Unity Provider setup

Unity Subsystems

Unity Interfaces

Unity 开源代码仓库

Unity Asset Store 发布

Unity 平台开发

Unity 实验性

Unity 旧版主题

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }