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

【Unity】在构建好的项目里创建自定义文件夹

在构建好的Unity项目里自动创建名为“ExternalData”的文件夹:

        实现步骤:

                1. 在项目目录(Asset)下创建一个自定义的文件夹:Assets/ExternalData[文件夹里可以放文件,会被一起复制过去]);

                2. 编写下方脚本,并将其放在Editor文件夹下;

using System.IO;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;/// <summary>
/// 这是一个继承了 IPostprocessBuildWithReport 接口的类,用于在Unity构建完成后执行自定义操作。
/// </summary>
public class PostBuildProcessor : IPostprocessBuildWithReport
{public int callbackOrder => 0;// 回调顺序,数字越小越先执行/// <summary>/// 该方法会在Unity构建完成后自动调用/// </summary>/// <param name="report">构建完成后的报告</param>public void OnPostprocessBuild(BuildReport report){// 源文件夹路径(项目内)string sourceFolder = Path.Combine(Application.dataPath, "_ExternalData");// 目标路径(构建输出目录)string buildPath = Path.GetDirectoryName(report.summary.outputPath);string targetFolder = Path.Combine(buildPath, "_ExternalData");// 复制文件夹if (Directory.Exists(sourceFolder)){   CopyDirectory(sourceFolder, targetFolder);Debug.Log($"已复制自定义文件夹到: {targetFolder}");}else{Debug.LogWarning($"自定义文件夹不存在: {sourceFolder}");}}/// <summary>/// 复制文件夹及其内容到目标目录/// </summary>/// <param name="sourceDir">源文件夹</param>/// <param name="targetDir">目标文件夹</param>private void CopyDirectory(string sourceDir, string targetDir){   // 遍历源文件夹里的所有文件Directory.CreateDirectory(targetDir);foreach (var file in Directory.GetFiles(sourceDir)){// 使用System.IO中的静态类File实现复制文件// 参数解释为:源文件的具体路径,目标文件的路径,true表示覆盖已经存在的同名同类型文件File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)), true);}// 遍历源文件夹里的所有子文件foreach (var dir in Directory.GetDirectories(sourceDir)){   // 获取该子文件夹的名称string dirName = Path.GetFileName(dir);// 使用递归的方式继续遍历该子文件夹CopyDirectory(dir, Path.Combine(targetDir, dirName));}}
}

                3. build项目后,就可以在构建好的项目里看到名为ExternalData的文件夹(与可执行文件同级),该ExternalData文件夹下的文件与项目的文件保持一致。                

http://www.dtcms.com/a/306821.html

相关文章:

  • 2.3.1-2.3.5获取资源-建设团队- 管理团队-实施采购-指导
  • solidity 中 Eth 和 Usd 到底如何转换
  • 技术人生——第17集:京城首发,AI叩问
  • C++中sizeof运算符全面详解和代码示例
  • 15.网络编程:让程序学会上网
  • 【读书笔记】设计数据密集型应用 DDIA 第二章
  • RPA软件推荐:提升企业自动化效率
  • 无线土壤水分传感器的结构组成及工作特点
  • Vue 3 入门教程 3- 响应式系统
  • Qt知识点3『自定义属性的样式表失败问题』
  • 飞算JavaAI自动设计表结构:重塑数据库开发新范式
  • 土木工程相关优化的C++实践
  • 《Spring Security源码深度剖析:Filter链与权限控制模型》
  • GitHub 上 Star 数量前 8 的开源 MCP 项目
  • <RT1176系列13>LWIP概念介绍
  • CSS 常用属性汇总
  • Thales靶场通关攻略
  • 【25-cv-08323】Keith携Olha Moroz13张版权画发案!
  • JAVAEE--4.多线程案例
  • Kettle 开源ETL数据迁移工具从入门到实战
  • 【swoole Windows 开发(swoole-cli 开发 hyperf)】
  • SpringBoot升级2.5.3 2.6.8
  • 原生C++实现信号与槽机制:原理详解
  • 【案例教程】基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用
  • 自定义Linux登录前的欢迎信息
  • 无人机入门--个人笔记
  • Set集合
  • Windows管理用户脚本
  • 多元线性回归方程的原理解析与案例
  • 【硬件】Verilog相关