assetbundle

Unity中文本AssetBundle的解析

▼魔方 西西 提交于 2019-12-06 11:05:56
 Unity在其安装目录下提供了许多实用的小工具,就存放在unity安装目录下的:Editor/Data/Tools, 其中该路径下的WebExtract.ext和binary2text.exe可以用来解析Text Asset打包出的AssetBundle, 也就是将二进制的ab反序列化成原来的文本格式。  使用这两个exe应用程序,我们就能了解到每次补丁中打出去的文本AB内部到底是什么,进而排查在游戏更新时出现的一些问题。不过在解析的时候操作步骤比较繁琐,所以笔者抽空写了一个bat脚本,自动化解析(顺便回顾下批处理的语法=.=),具体的bat脚本如下: @echo OFF :LOOP :: 使用方式:将脚本直接放到C:\Users\lin\AppData\Roaming\Microsoft\Windows\SendTo目录下,后续即可通过右键AB,点击“发送到” 选择对应的脚本 rem 前提是将下方的webExtractPath和binary2testPath变量的unity路径替换成你本地unity安装目录 set webExtractPath=C:\"Program Files\Unity565\Editor\Data\Tools\WebExtract.exe" set binary2testPath=C:\"Program Files\Unity565\Editor

Unity 3D: Asset Bundles vs. Resources folder vs www.Texture

一个人想着一个人 提交于 2019-12-06 01:51:08
问题 So, I've done a bit of reading around the forums about AssetBundles and the Resources folder in Unity 3D, and I can't figure out the optimal solution for the problem I'm facing. Here's the problem: I've got a program designed for standalone, that loads "books" full of .png and .jpg images. The pages are, at the moment, the same every time the program starts. At the start of the scene for any "book", it's loading all those images at once using www.texture and a path. I'm realizing now, however

OSS加载AssetBundle的坑

雨燕双飞 提交于 2019-12-06 01:04:42
http协议有被盗链的风险,万一被恶意刷流量就惨了 最近一直在想如何安全的下载AssetBundle webgl加载那么慢 ab包放在oss是个不错的选择 所以就将AssetBundle加载的办法挨个试 debug的时候发现 oss传过来的流can.seek属性为false ab包通过流的方式加载 要求 canseek属性必须为true 只能用其他方法了 明天再搞 Memory 方式 =-= 来源: https://www.cnblogs.com/pz904/p/11955021.html

unity使用WebRequest 方式加载assetbundle

纵然是瞬间 提交于 2019-12-05 19:30:40
string uri =""; UnityWebRequest request = UnityWebRequestAssetBundle.GetAssetBundle(uri); yield return request.SendWebRequest(); //AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request); AssetBundle ab = DownloadHandlerAssetBundle.GetContent(request); Debug.Log(ab); GameObject sp = ab.LoadAsset<GameObject>(filename); Instantiate(sp); 使用AssetBundles-Browser-master可以傻瓜式打包 将材质需要的纹理 和材质本身打到同一个包下 可以忽略依赖文件 只要下载一个包就行了 只需要sphere这一个文件即可 来源: https://www.cnblogs.com/pz904/p/11941614.html

Unity加载AB包

狂风中的少年 提交于 2019-12-05 00:59:36
Unity制作游戏AB包 需要注意的是在游戏场景运行的情况下,不能编译AB包,不运行的情况下编译AB包需要使用Unity的扩展菜单功能,首先需要建立菜单用来编译AB包。 1、建立AB包的名字,首先选中需要创建包的素材文件,然后在Inspector面板的最下方有一个两条横线, 把鼠标悬浮到横线上,鼠标向上拖动最下方就会出现AssetBundle的选项, 选择中间的选项,点击New创建AB包的名字即可 建立菜单:此脚本需要继承Editor类,并且引用Editor命名空间,凡是继承Editor类的脚本必须放到项目Editor文件夹下。 1、 创建菜单使用编辑器扩展功能,只需要在静态方法前加上[MenuItem(菜单目录)]就可以在菜单列表创建一个自定义名字的菜单。 [MenuItem("打包/AB")] static void ABTest() { Debug.Log("开始AB包"); BuildPipeline.BuildAssetBundles("Assets/Prefabs", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64); } 编辑菜单 AB包创建完成之后,只需要在创建出来的文件中找到跟你设置的AB包名字一样的文件,上传到Web服务器,并且能够根据链接下载就行。 2

Get Hash128 from AssetBundle for the Caching.IsVersionCached function

你说的曾经没有我的故事 提交于 2019-12-04 17:46:00
I want to know AssetBundle already in cache. This is usually done with the Caching.IsVersionCached function. The Caching.IsVersionCached(string url, int version) function overload is no longer supported in Unity 2017.1 . Unity 2017.3 is recommends that I use the Caching.IsVersionCached(string url, Hash128 hash) overload. I don't know what the Hash128 is and how to obtain and use it. What is Hash128 used for an how do you obtain it from the AssetBundle? Thank you for your answer. But I can't solve my problem. this is my code for (int i = 0; i < assetInfoList.Count; i++) { while (!Caching.ready)

Unity3D研究院之加密Assetbundle不占内存(一百零五)

。_饼干妹妹 提交于 2019-12-03 23:23:57
https://www.xuanyusong.com/archives/4607 AssetBundle.LoadFromMemory基本上是无法在手机上用的,因为要多占一份内存,所以大多Unity项目都不进行资源加密。 Unity2017.2提供了一个新的API AssetBundle.LoadFromStream,通过名字就可以知道它是流加载,那么就不会像AssetBundle.LoadFromMemory那样多占一份很大的内存了。 打包Assetbundle的同时生成加密文件的两个文件分别加载它。 myab.unity3d encypt_myab.unity3d 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [ MenuItem ( "Tools/BuildAB" ) ] static void BuildAB ( ) { FileUtil . DeleteFileOrDirectory ( Application . streamingAssetsPath ) ; Directory . CreateDirectory ( Application . streamingAssetsPath ) ; var manifest = BuildPipeline . BuildAssetBundles ( Application .

Unity AssetBundle 加密

与世无争的帅哥 提交于 2019-12-03 23:22:01
https://blog.csdn.net/wangjiangrong/article/details/89671861 前言 昨天面试,面试官问了些有关AB包相关的知识点,问到了有关AB加密的问题,由于之前没有了解过,而且感觉是一个蛮重要的一个环节。所以今天查了查相关知识,记录一下(要是不对的地方,欢迎大佬们帮忙纠正) 我们都知道我们的ab包都是放在包体的可读文件夹下,玩家是可以很轻易的取出我们的ab包,若没有做加密处理的话,按照正常的读取ab包的操作,任何人都可以加载出我们ab包的内容,然后并使用,这显然是很不安全的。 这里我们用一个简单的加密算法,对我们的ab包进行加密。 思路 在得到ab包后,我们遍历StreamingAssets目录,获取所有的ab包,然后逐个将ab包转为byte[],然后byte[]中的每一位都和设定好的秘钥key执行异或操作(加密)。最后将新的byte[]重新写入文件中,即加密完成。 在ab读取的时候,也要从原本的AssetBundle.LoadFromFile()方法转为用AssetBundle.LoadFromMemory()方法,传入的byte[]参数同样是将要读取的ab包转为byte[],然后每一位和秘钥key执行异或操作(解密)。 注:A 异或 Key = B,B 异或 Key = A。 代码实现 本代码是跟着之前打包ab包的工程内加的

Unity5中Inspector界面上的AssetBundle值设定问题

折月煮酒 提交于 2019-12-03 16:07:01
注: 编辑器扩展方面 Unity5 AssetBundle Unity5对AssetBundle做了很大的调整,与旧版很大不同,例如,如果一个资源已经打包,如果该资源没有任何更新,那么该资源将不会被打包。打包的同时会生成该文件同名的“*.manifest”文件,该文件中记录了打包后的bundle文件的相关信息。 此外,在Inspector面板中还多出了AssetBundle的名称和文件扩展名的的选项,如图: 最近有个需求需要通过以编辑器扩展方式实现同时设置多个资源文件的AssetBundle文件名和后缀。 代码如下: [ MenuItem ( "Tool/SetFileBundleName" )] static void SetBundleName() { #region 设置资源的AssetBundle的名称和文件扩展名 UnityEngine. Object [] selects = Selection .objects; foreach (UnityEngine. Object selected in selects) { string path = AssetDatabase .GetAssetPath(selected); AssetImporter asset = AssetImporter .GetAtPath(path); asset.assetBundleName

unityEditor利用自定义窗口打包AssetBundle

送分小仙女□ 提交于 2019-12-03 15:26:31
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.IO; //初始版本 //参考https://blog.csdn.net/damenhanter/article/details/50221841 public class ExportAssetBundles : EditorWindow { [MenuItem("Build/ExportResource")] static void ExportResource() { //打包方式一 //打开保存文件面板,获取用户选择的路径 //string path = EditorUtility.SaveFilePanel("Save Resource","" ,"New Resource", "assetbundle"); //Debug.Log(path);//保持AB包路径 //if(path.Length!= 0) //{ // //选择要保存的对象 选择模式包含文件夹 // Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets); // //打包