zoukankan      html  css  js  c++  java
  • 原来在UNITY中使用system.io下的所有函数都可以用相对路径 : Assets/xx

    代码如下图,这样就不用在绝对路径和相对路径之间不断转换了。

    想要得到绝对路径时就傅 Application.dataPath  + xxx

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using UnityEditor;
    using UnityEngine;
    public class abbuilder
    {
        [MenuItem("AssetBundle/BuildABx")]
        public static void BuildAB()
        {
            var rootPath = "Assets/ResInGame";
    
            if (!Directory.Exists(rootPath))
            {
                Debug.LogError("file not exist:" + rootPath);
                return;
            }
    
            var files = Directory.GetFiles(rootPath, "*", SearchOption.AllDirectories);
            var abBuilds = new List<AssetBundleBuild>(files.Length / 2); //估计值,肯定够了,因为每个文件夹也有META文件
    
            var stopwt = System.Diagnostics.Stopwatch.StartNew();
            var t1 = stopwt.ElapsedMilliseconds;
    
            foreach (var item in files)
            {
                var dir = Path.GetDirectoryName(item);
                var fileName = Path.GetFileName(item);
    
                if (item.EndsWith(".meta"))
                    continue;
    
                var relativeDir = item.Substring(17);
                var abBuild = new AssetBundleBuild();
                abBuild.assetBundleName = relativeDir;
                abBuild.assetNames = new string[] { item };
                abBuild.assetBundleVariant = "ab";
                //Debug.Log(item + "
    " + fileName + "
    ");
    
                abBuilds.Add(abBuild);
            }
    
            var abPath = Application.dataPath.Substring(0, Application.dataPath.Length-6) + "Bundles";
            
            if (!Directory.Exists(abPath))
            {
                Directory.CreateDirectory(abPath);
            }
    
            var dt1 = stopwt.ElapsedMilliseconds - t1;
    
            BuildPipeline.BuildAssetBundles(abPath, abBuilds.ToArray(), BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.Android);
    
            var dt2 = stopwt.ElapsedMilliseconds - t1 - dt1;
    
            EditorUtility.DisplayDialog("", dt1 +"," + dt2, "ok");
        }
    }
  • 相关阅读:
    SessionFactory Cache 的配置
    乱码处理问题
    格式化当前日期
    JDK的安装
    内存和对象内存池技术在网游开发中的注意点和应用
    Head First设计模式C++实现Strategy模式
    介绍三种将二进制字节字符转换为ASCII方法
    C++风格的类型转换的用法
    i++循环与i循环的执行效率
    系统程序员成长计划组合的威力(一)
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/11008823.html
Copyright © 2011-2022 走看看