赞
踩
Unity使用2019.4.8版本。
首先就是要熟悉Addressables插件,其实转小程序的原理就是把游戏资源都放在服务器上减小包体,抖音使用的加载就是对Addressables插件进行二次封装,原理都是一样的。
总结一下步骤:
1.清理第三方SDK。
2.整理资源,将加载方式替换为抖音提供的,最好是异步加载配合缓存读取。需要放在服务器的资源的注意LoadPath。
3.处理好后Build AB包然后选择Profile下的localhost配合USE EXISTING BUILD进行本地测试。注意要在Tool下的Hosting Services开启本地服务器。运行前需要清楚一下缓存Clear AB Caching,不然可能会读取本地缓存影响实际测试。
4.本地测试没问题后就可以把RemoteBuildPath路径下的AB包上传至CDN以供下载。可能会打出多个AB包但是没关系,全部上传到CDN,游戏会自动选取对应名称文件。注意要检查下载路径(RemoteLoadPath)。
5.到此游戏处理基本完成,剩下的发布步骤参考文档即可。
关于分包处理:
a, 可以手动拆成多个group。例如每5关一个group。
b, 也可以Editor中,修改group的Inspector面板中的"Bundle Mode"属性,使用"Pack Separately",让他按group中每个asset条目都分开单独打ab。
如果你的asset其中一个,直接或间接引用了所有其他的太多asset资源(例如用public的属性在inspector挂了很多Prefab、ScriptableObject引用),那么容易仍然导致加载其中一个asset时,同时会依赖下载其他间接引用到的所有asset所在group的AB bundle,这可能是你不想要的结果。
如果是这样,那么可以考虑把这种强引用关系拆开,改成弱引用。
改为弱引用常用方法:
a, 改为 public string 字符串、或其列表,填入所要弱引用的asset资源的 addressable key、label。运行时再LoadAsset (请自行选择合适的加载接口)。
b, 改为 public AssetReference 类型变量、或其列表,inspector 挂所要引用的asset资源,此时为弱引用。运行时再对assetRef对象执行 LoadAsset。
static ResLoader.LoadAssetAsync<T>(AssetReference)
AssetReference.LoadAssetAsync<T>()
var assetRef = new AssetReference();
var isMainOK = assetRef.SetEditorAsset(asset);
Assert.IsTrue(isMainOK);
var isSubOK = assetRef.SetEditorSubObject(subSprite1);
Assert.IsTrue(isSubOK);
注意事项:
1.如果Profile的重试次数少可能会导致加载资源时断网后游戏卡住,可以通过提高RetryCount解决。
2.之前发现ab包只有传到cdn根目录才能加载,但是放到文件夹中更方便管理。后来改了路径在根目录后面加上文件夹名称再重新打包即可。
3.关于统计打点,需要埋点对应后台配置。如下。
//上报
public static void SendMessage<T>(string eventName, Dictionary<string, T> param)
{
StarkSDK.API.ReportAnalytics(eventName, param);
}
//对应上图后台配置
public static void SendAdShowMessage( string ad_position)
{
SendMessage<string>("adshow", new Dictionary<string, string>() { { "ad_position", ad_position } });
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。