Unity AssetsBundle一键为需要打包的预制体设置assetBundle名

这篇具有很好参考价值的文章主要介绍了Unity AssetsBundle一键为需要打包的预制体设置assetBundle名。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

直接看代码:文章来源地址https://www.toymoban.com/news/detail-503733.html

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;

public class AssetBundleNameGenerate
{

    [MenuItem("AssetBundles/generic ABName of assets", false, 100)]
    public static void GenericAssetBundleNames()
    {
        GenericAssetBundleNamesInPath(Application.dataPath + "/prefabs", ".prefab", "prefab", SearchOption.AllDirectories, "", null);
    }

    /// <summary>
    /// 对目录内指定后缀名的文件设置assetBundleName
    /// </summary>
    /// <param name="fullPath">文件路径</param>
    /// <param name="fileExt">文件后缀</param>
    /// <param name="typeName">类型名</param>
    /// <param name="searchOption">搜索文件的类别</param>
    /// <param name="suffixName">assetBundle后缀名</param>
    /// <param name="filterStr">名字过滤(包含)</param>
    private static void GenericAssetBundleNamesInPath(string fullPath, string fileExt, string typeName, SearchOption searchOption, string suffixName, string filterStr)
    {
        if (Directory.Exists(fullPath))
        {
            EditorUtility.DisplayProgressBar("设置AssetBundle名称", "正在设置AssetName名称中...", 0f);
            var dir = new DirectoryInfo(fullPath);
            var files = dir.GetFiles("*" + fileExt, searchOption);

            for (int i = 0; i < files.Length; i++)
            {
                var fileInfo = files[i];
                EditorUtility.DisplayProgressBar("设置AssetBundle名称", "正在设置AssetName名称中...", 1f * i / files.Length);

                string assetBundleName = string.Empty;
                if (string.IsNullOrEmpty(typeName) == false)
                {
                    if (string.IsNullOrEmpty(filterStr) || fileInfo.Name.IndexOf(filterStr) >= 0)
                    {
                        string name = fileInfo.Name.Substring(0, fileInfo.Name.Length - fileExt.Length);
                        name = name.ToLower();
                        if (name.Contains(" "))
                        {
                            Debug.LogErrorFormat("资源名字存在空格符path = {0}", fileInfo.FullName);
                        }
                        assetBundleName = string.Format("{0}/{1}{2}.unity3d", typeName, name, suffixName);
                    }
                }

                var path = fileInfo.FullName.Substring(Application.dataPath.Length - "Assets".Length).Replace('\\', '/');
                var importer = AssetImporter.GetAtPath(path);
                if (importer != null && importer.assetBundleName != assetBundleName)
                {
                    importer.assetBundleName = assetBundleName;
                }
                if (importer.assetBundleName != null && importer.assetBundleName != "")
                {
                    importer.assetBundleVariant = null;
                }
            }
            EditorUtility.ClearProgressBar();
        }
        else
        {
            Debug.LogErrorFormat("文件夹路径名出错:{0}", fullPath);
        }
    }
}

到了这里,关于Unity AssetsBundle一键为需要打包的预制体设置assetBundle名的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [游戏开发][Unity]Assetbundle打包与资源加载框架

    我会分三个篇章写整个框架分别是: AB打包篇 AB下载篇 AB加载篇 整个框架内容比较多,属于企业级方案,涉及到增量打包、打包策略、AB包下载、边玩边下、资源管理系统,资源加载系统等功能。 Unity小白看本系列文章可能比较吃力。如果我哪里写的不好,影响理解了,欢迎

    2024年02月13日
    浏览(51)
  • Unity引擎打包AssetBundle后模型网格数据丢失问题

    大家好,我是阿赵。 在项目里面,有时候会遇到这样一个问题。在Unity编辑器里面编写了一个shader,在编辑器看,效果都是没有问题的。但如果把资源打包成AssetBundle后,会发现shader的表现不对了。遇到了这种问题的时候,一般人会各自的怀疑,怀疑是不是shader写得不对,导

    2024年02月07日
    浏览(49)
  • Unity AssetBundle批量打包、加载(场景、Prefab)完整流程

    1、文章介绍 2、具体思路和写法         (1)AB包的打包         (2)AB包的加载         (3)AB包卸载 3、结语 本篇博客主要起记录和学习作用,简单的介绍一下AB包批量的打包和加载AB包的方式,若各位同学有幸看到本篇博客,希望能够对你有所帮助。 (1)

    2024年02月04日
    浏览(40)
  • Unity 解决SpriteAtlas图集打包AssetBundle白图问题

    之前文档上说勾选了Include in build之后,就不需要自己增加一个Binding脚本,但是仍然会弹出警告,并且会出现白图现象 Tight Packing 勾选之后当Sprite有透明通道可能会出现错位 不推荐勾选 选项取消勾选之后打包AssetBundle会报警告 并且出现白图现象 那是因为没有进行bing  Sprite

    2024年02月11日
    浏览(41)
  • Unity中使用AssetBundle打包与加载的注意事项

    一、使用AssetBundle进行打包与加载 个人觉得可以参考以下两篇博客,这个网上相关教程很多,还不明白的可以去百度,或者给我留言。 Unity 打包与加载AssetBundle(加载对应的依赖) Unity中的AssetBundle 二、使用AssetBundle进行加载的时候注意事项: 注意事项一:AssetBundle名字和设置

    2024年02月11日
    浏览(38)
  • 【Unity 3D】AssetBundle打包、上传、加载、卸载详解及演示(附源码)

    需要源码及依赖请点赞关注收藏后评论区留言私信~~~ AssetBundle最重要的操作就是AssetBundle打包 下载 加载以及卸载 下面就来了解一下AssetBundle的常用操作 AssetBundle打包主要用到下面两个API BuildAssetBundles(string outputPath,AssetBundleBuild[] builds, BuildAssetBundleOptions assetBundleOptions,BuildTarg

    2024年02月10日
    浏览(34)
  • Unity3D打包Assetbundle丢失Shader问题

    详情见:https://www.pianshen.com/article/5391338163/ 1、Unity3D在打包Assetbundle时,可能会遇到Shader丢失的问题,解决方法:打开 Edit-Project Settings-Graphics,在Always Included Shaders列表添加上所需的shader ,再打包即可。 2、参考 3、原文复制 Scriptable RenderLoop settings This is an experimental setting wh

    2023年04月22日
    浏览(57)
  • [游戏开发][Unity]Assetbundle打包篇(5)使用Manifest二次构建资源索引

    打包与资源加载框架目录 正文开始前,先把打包代码放过来,请注意,前面的代码已省略,自己去对比前面的文章。本篇文章从第一次执行打包代码开始。 第一次调用BuildPipeline.BuildAssetBundles打包API后(详见代码第七行),会返回AssetBundleManifest的引用, 【疑问】: BuildPipe

    2024年02月03日
    浏览(36)
  • Unity移动平台相关(一)Android打包设置

    Unity2019及以上 发布Android准备工作 通过UnityHub安装Android平台相关工具 1.Android构建支持 2.Android SDK(安卓软件开发工具包)、NDKTools(本地开发工具包) 3.OpenJDK(Java开发工具包) 注意:Unity支持Android 5.1及以上版本 Unity2019以下版本 1.Android构建支持工具安装(Unity提供下载,安装

    2023年04月14日
    浏览(34)
  • Unity如何修改预制体(预制件)?

    【预制件】 预制件作用:方便复用 【预制件】的制作 直接拖拽,从层级面板 - 项目面板。层级面板中当前图标会变蓝,子物体名字变蓝色。预制件是一个文件,可以导出,也方便别人使用。 【预制件】修改 直接修改预制件的属性会影响hierarchy中的游戏对象 直接修改hierar

    2024年04月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包