如何将自定义包发布至AssetStore并确保导入至Packages文件夹?
解决Unity AssetStore工具导入至Packages文件夹的问题
核心思路
Unity AssetStore默认将资源导入至Assets目录,但要实现导入到Packages文件夹,需结合Package Manager兼容结构与AssetStore特殊打包逻辑,同时处理Editor Default Resources的编辑器识别需求。
具体步骤
1. 调整项目结构适配AssetStore上传要求
将完整的package结构放入Assets/[你的工具名]目录下,保留内部层级:
Assets/ └── YourToolName/ ├── package.json ├── Runtime/ # 存放图片、预编译DLL等核心工具文件 ├── Editor/ # 编辑器逻辑代码(若有) └── Editor Default Resources/ # 编辑器资源文件夹
注:
Editor Default Resources必须处于Assets目录下才能被Unity编辑器识别,直接包含在上传目录即可。
2. 添加导入后自动移动至Packages的编辑器脚本
在Assets/YourToolName/Editor目录下创建PackageMover.cs脚本,内容如下:
using UnityEditor; using System.IO; using UnityEngine; [InitializeOnLoad] public static class PackageMover { static PackageMover() { string sourcePath = Path.Combine(Application.dataPath, "YourToolName"); string targetPath = Path.Combine(Application.dataPath, "../Packages/YourToolName"); // 避免重复移动,仅在Packages目录无该工具时执行 if (!Directory.Exists(targetPath) && Directory.Exists(sourcePath)) { Directory.Move(sourcePath, targetPath); AssetDatabase.Refresh(); Debug.Log("工具已自动迁移至Packages目录"); } } }
替换
YourToolName为工具实际名称,该脚本会在项目加载时自动执行一次移动操作。
3. AssetStore打包与发布注意事项
- 上传时选择
Assets/YourToolName作为根目录 - 在工具描述中明确告知用户:工具会自动导入至Packages目录,无需手动操作
- 用全新Unity项目测试打包包体,验证移动逻辑、资源识别是否正常
4. 确保package.json符合Unity规范
示例配置如下,按需修改字段:
{ "name": "com.yourcompany.yourtool", "version": "1.0.0", "displayName": "你的工具名称", "description": "工具功能描述", "unity": "2020.3", "keywords": ["工具", "编辑器"], "author": { "name": "你的名称", "email": "你的邮箱", "url": "你的官网" } }
关键说明
Editor Default Resources迁移至Packages目录后,Unity仍能正常识别其内容- 移动脚本仅在首次导入时执行,不会重复触发
- 务必在干净项目中完成全流程测试,避免缓存干扰
内容的提问来源于stack exchange,提问作者UnknownUser
相关产品推荐
相关产品推荐

