Giter Site home page Giter Site logo

xasset's Issues

提供LoadAssetWithSubAssets的支持

作者您好,我在使用过程中需要加载一个用multiple模式切分的sprite,得到一个包含切分好的sprite的array。但是这个功能框架里好像没有提供。xasset好像只用到了LoadAsset和LoadAssetAsync这两个函数,没有提供对LoadAssetWithSubAssets的支持,如果要加上这个功能的话应该放在哪里呢?

BUG:配置丢失

现象:当在一处新的位置clone下工程后,配置信息(Rule和Manifest)丢失

复现方法:

关掉Unity Editor ,删掉已有工程的Library目录,然后重新打开编辑器,观察到配置信息丢失:
image


之前遇到类似的坑,猜测原因如下:
image

在没有Library时,Unity会先构建代码,这时候如果我们有在项目刚打开时候做“判断资源在不在,如果不在就创建”的操作时,由于Unity Editor还没有读取到配置文件, AssetDatabase会始终得不到资源。
此时执行创建操作,会覆盖原有资源

Readme 链接失效了

例如文档和视频链接,麻烦有时间处理一下 或者 有其他链接吗?

下载挂起bug

阅读代码发现,下载成功用的都是下标记录位置,假设同时下载3个文件.由于index2的文件比较小,马上下载完成了,此时选择挂起restart()
可能会出现0 和1 没下载,但是restart后,下标指向错误把.这里只是猜测.

WebGL无法加载

NullReferenceException: A null value was found where an object instance was required.
UnityLoader.js:4 at Plugins.XAsset.Bundles.Load (System.String assetBundleName, Boolean isLoadingAssetBundleManifest, Boolean asyncMode) [0x00000] in :0
UnityLoader.js:4 at Plugins.XAsset.Bundles.Initialize (System.String path, System.String platform, System.Action onSuccess, System.Action1 onError) [0x00000] in <filename unknown>:0 UnityLoader.js:4 at Plugins.XAsset.Assets.Initialize (System.Action onSuccess, System.Action1 onError) [0x00000] in :0
UnityLoader.js:4 at AssetsInit.Start () [0x00000] in :0
UnityLoader.js:4
UnityLoader.js:4 (Filename: currently not available on il2cpp Line: -1)

限制网速到100kb/s,下载超时问题

限制网速之后,点击同时下载多个group的任务,实际最大并行下载任务数(Download.MaxDownloads)是是默认的10个,下载下载着会出现超时或者没下载完的报错:
image

Download分段下载问题

问题代码:

request.SetRequestHeader("Range", "bytes=" + len + "-" + maxlen);

应改为:
request.SetRequestHeader("Range", "bytes=" + len + "-" + (maxlen - 1));

或者干脆改为:
request.SetRequestHeader("Range", "bytes=" + len + "-");

详细参考:
https://www.cnblogs.com/OIMM/p/9144798.html

多说两句:
我觉得这个maxlen的真正意义是为了分段下载,避免一次下载内容长度过长,导致内存占用过高。希望作者可以重新梳理下逻辑。

下载失败之后,自动retry有问题

偶现问题,有时候下载会失败,但是开启了自动retry,发现retry之后会导致bundle加载失败
image
如果一次性下载成功,没有出现retry则可以正常加载bundle

关于assetbundle name设置的疑惑

示例项目中有四个assetbundle name,分别是sprites、prefabs、scenes、textures,编译ab后,其中sprites对应的资源是Logo.png和Grids.png,但是选中这两个图片,右下角assetbundle name显示为none,点击右下角的remove unused names,也没有移除上面4个abname,请问这4个abname对应的资源,是在哪里设置的?

为什么切换场景后,实例化物体的地址会报错?

9b8caf588415babb289a8daf28a7d64

我在场景A实例化了一个Cube,但是切换到场景B,再切换到场景A,预设物的地址就会报错

// 加载 prefab
var path = "Assets/Prefabs/Cube.prefab";
var request = Asset.LoadAsync(path, typeof(GameObject));
yield return request;
var prefab = request.asset;
var go = Object.Instantiate(prefab);
// 回收 prefab,在回收前,需要先把 实例化的 go 销毁。
//Object.DestroyImmediate(go);
request.Release();

分场景下载

初始包只有第一个场景,会热更新新, 玩家打过第一个场景就下载第二个场景, 第二个场景有更新的话也会热更新, 这个怎么做啊

关于增量更新

作者你好,
咨询一个问题
我有一个组TextureGroup,当我需要增量其中Texture 1时,是否需要增量整个TextureGroup完成更新呢?

Xasset是否支持类似Addressables的Check for Content Update Restrictions(检查内容更新限制)功能,只对修改的文件做增量更新?

关于versions_vX.json文件的问题

如果有比较多的build的话,会出现versions_v1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.json这种奇怪的文件,建议调整下版本号的策略。因为我的项目中有几十个build,也不知道是什么原因,直接导致在用jenkins打包时,unity直接到后面就shutdown了~
我目前的做法是:
1)动态计算bundle data目录下的versions_vX.json的版本号;
2)bundle data不存在version_vX.json时使用versions_v1.json;
3)存在时,如果versions文件内的data部分和bundle cache中的一致则不更新版本文件依旧使用该版本;
4)如果不一致,则取最大版本号版本信息文件versions_vX.json的X+1作为新的版本号。
这样就不会出现这种奇怪的文件。

Android平台热更问题,Download使用WebRequest异常

打Android包在手机上测试,发现热更总是失败,打debug包发现,在创建WebRequest直接就异常了,捕捉到的异常信息也为null,很是奇怪

private WebRequest GetHttpWebRequest()
{
      var request = (HttpWebRequest) WebRequest.Create(info.url)
}

as 热更

有考虑支持asset bundle 热更新吗?

关于官方文档里提到的Assets.GetDownloadSizeAsync(versions, assetContainer.GetAssets())接口

在例子文档中看到了这个接口:
// 查询 assetContainer.GetAssets() 返回的资源是否需要下载更新。
var getDownloadSizeAsync = Assets.GetDownloadSizeAsync(versions, assetContainer.GetAssets());
这个接口在代码中没有找到,请问这个是付费版的功能吗?assetContainer是主要用来做什么的?

之前的版本里有个根据清单获取更新大小的接口,新版本里貌似被取消了。

比分说我有100个关卡,每次进关卡之前都要看下资源是不是有更新。我目前是做了100个Build,类似于之前的清单文件。
每次进关卡之前,使用GetDownloadSizeAsync检查下这个build是不是有更新。
public static GetDownloadSizeRequest GetDownloadSizeAsync(string buildName)
{
var versions = ScriptableObject.CreateInstance<Versions>();
versions.data = Versions.data.Where(version => buildName.Equals(version.name)).ToList();
return GetDownloadSizeAsync(versions);
}

xasset.editor.Initializer导致无法使用代码设置SimulationMode

Assets.SimulationMode = Settings.GetDefaultSettings().simulationMode;
Assets.OfflineMode = Settings.GetDefaultSettings().offlineMode;
if (Assets.SimulationMode)
{
    InitializeRequest.CreateHandler = EditorInitializeHandler.CreateInstance;
    AssetRequest.CreateHandler = EditorAssetHandler.CreateInstance;
    SceneRequest.CreateHandler = EditorSceneHandler.CreateInstance;
    References.GetFunc = Settings.GetDependencies;
    References.Enabled = true;
}

这里使用了Settings里读取的SimulationMode导致无法使用代码来设置
既然提供了初始化为什么这个里还需要放到AfterSceneLoad?

unity下载bundle中,暂停游戏无法恢复下载bug

无论手机还是unity中,切换后台或者息屏OnApplicationFocus被调用,暂停恢复游戏后出现无法恢复下载,
观察代码隐约感觉有bug,如下:
public void Restart()
{
_startTime = Time.realtimeSinceStartup;
_lastTime = 0;
_started = true;
_downloadIndex = _finishedIndex;
var max = Math.Min(_downloads.Count, maxDownloads);
for (var i = _finishedIndex; i < max; i++)// 当已经下载数量超过 max ,这个for无法执行,_tostart add就为空.(猜测)
{
var item = _downloads[i];
_tostart.Add(item);
_downloadIndex++;
}
}

打包场景的问题

该工具不支持场景打包吗?
对包含有光照贴图或者navmesh数据的场景打包会报错
Cannot mark assets and scenes in one AssetBundle

关于 sprite atlas late binding AB 包卸载时机的问题

作者你好!
项目UGUI使用了新版的 sprite atlas, 一个 UI 模块对应了一个 sprite atlas, 用一个 全局的SpriteAtlasLoader.cs负责 atlas 的加载;
根据官方文档的介绍, 要实现 late binding,得使用SpriteAtlasManager.atlasRequested; 但是并不知道这个 sprite atlas Asset 什么时候使用完毕, 那应该什么时候调用 Asset.Release呢?
11

关于Plugins.XAsset.Assets.Unload接口的用法

感觉跟直接 asset.Release 的作用是一样的; 而且下图框中的代码应该也不会执行到, 因为_unusedAssets在 Update 函数中已经清空了, 也不会有其它地方往里添加元素.
QQ20190718-161324

资源打包build bundles

在项目的文件夹下面Bundles/iOS/ 下面没有生成updateinfo.json 这个文件呀 BundlesCache/iOS目录下存在更新信息和版本json文件

希望可以手动控制版本生效

现在versions.json 的生效在DownloadAsync()中 如果在bundles下载前使用到bundle中资源将会自动从cdn中下载
需要提供接口 可以在bundles下载完成后再生效新版资源

加载路径

var asset = Assets.Load("Assets\\xx\\Resources\\UI/fui.bytes", typeof(UnityEngine.Object));
asset.completed += delegate (Asset a) {};

路径必须这么写才能成功加载。而我希望是这样统一,比如

var asset = Assets.Load("Assets/xx/Resources/UI/fui.bytes", typeof(UnityEngine.Object));
asset.completed += delegate (Asset a) {};

或者

var asset = Assets.Load("Assets\\xx\\Resources\\UI\\fui.bytes", typeof(UnityEngine.Object));
asset.completed += delegate (Asset a) {};

关于 AsyncOperation 和 loadSceneAsync

我想用 AsyncOperation.allowSceneActivation 去控制scene的加载过场, 但是如果用xasset 的Assets.LoadSceneAsync 会返回 assetrequest,那应该怎么转成 AsyncOperation呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.