Unity学习笔记(5):动态加载Prefab |
您所在的位置:网站首页 › unity中的prefab怎么打包 › Unity学习笔记(5):动态加载Prefab |
第一种方法,从Resources文件夹读取Prefab Assets/Resources文件夹是Unity中的一个特殊文件夹,在博主当前的认知里,放在这个文件夹里的Prefab可以被代码动态加载 直接上代码 GameObject Prefab = (GameObject)Resources.Load("Prefabs/Character"); Instantiate(Prefab);第二种方法,绝对路径读取Prefab 这种方法仅限Editor模式使用,在制作插件的时候会经常用到 GameObject gb = AssetDatabase.LoadAssetAtPath("Assets/Prefabs/Character.prefab", typeof(GameObject)) as GameObject; Instantiate(gb)Resources.Load函数返回一个object对象,第一个参数为以Resources为根目录,目标Prefab的路径,第二个参数为Prefab的名字,最后将这个object对象强转成(GameObjcet)就可以获得Prefab了 第三种方法,把Prefab打包成AssetBundle并且使用AssetBundle相关API动态加载 1.首先在资源管理器中找到你想打包的Prefab,找到Inspector页面下面的Asset_Labels,打开
CreateAssetBundles.cs: using UnityEditor; using System.IO; public class CreateAssetBundles { //设定AssetBundle的储存路径 static string AssetbundlePath = "Assets" + Path.DirectorySeparatorChar + "assetbundles" + Path.DirectorySeparatorChar; //编辑器扩展 [MenuItem("Assets/Build AssetBundle")] static void BuildAssetsBundles() { //创建路径 if (Directory.Exists(AssetbundlePath) == false) { Directory.CreateDirectory(AssetbundlePath); } //使用LZMA算法打包 BuildPipeline.BuildAssetBundles(AssetbundlePath, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64); } }BuildPipeline.BuildAssetBundles的第二个参数是打包的压缩方式 有三个可选参数 BuildAssetBundleOptions.None LZMA算法压缩,压缩包小,加载慢 BuildAssetBundleOptions.UncompressedAssetBundle; 不压缩,包大,加载快 BuildAssetBundleOptions.ChunkBasedCompression LZ4压缩,压缩率比LZMA低,可以加载指定资源不用解压全部 保存
回到Unity Editor,点击Assets可以看到最下面出现了Build AssetBundle选项,点击Build AssetBundle,打包
可以通过AssetBundleLoader.LoadAssetBundle(string, string)来加载Prefab等资源,关于这个函数要不要先卸载AssetBundle,这取决于你的框架是否只需要加载一次这个包,并且有一个管理这些资源的系统,我这种做法无疑是降低效率的(其实就是懒得再搭个系统),根据实际情况用不同的方式来加载AssetBundle吧 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |