网易首页 > 网易号 > 正文 申请入驻

Unity Q&A 第5期 :Scriptable Build Pipeline及构建Assetbundle

0
分享至

Unity技术支持工程师陈嘉栋每周都会总结出,过去一周在Unity官方社区交流群中比较有代表性的问题。今天我们将分享第5期的社区Unity Q&A,着重介绍Unity 2018中Scriptable Build Pipeline及构建Assetbundle。

Unity Q&A 系列回顾:

  • 第1期:巧妙设置Texture Type,将ShadowMask内存占用变成之前的1/4

  • 第2期:还原堆栈信息,分析地形系统使用ASTC纹理导致的Crash

  • 第3期 :Unity 2018的LWRP和混合光照

  • 第4期 :在Shader Graph中获取深度图

Scriptable Build Pipeline

问题01:Unity 2018.2中,在资源包管理器中没找到Scriptable Build Pipeline,如何解决?

回答:很多开发者都非常关注Unity2018中的可编程脚本渲染管线Scriptable Render Pipeline,简称SRP。其实Unity2018.2版本中还推出了另一个脚本管线Scriptable Build Pipeline,简称SBP。

但不少朋友可能会发现在Unity 2018的编辑器和资源包管理器都找不到SBP。

安装SBP很简单,我们只需修改工程目录下的Packages/manifest.json文件,在 “dependencies”这项添加对SBP的依赖。

{

"dependencies": {

"com.unity.scriptablebuildpipeline": "0.2.0-preview"

}

}

这样就能将SBP安装到工程中了。

下面,我们就可以调用SBP的API来构建大家都很熟悉的Assetbundle了。

新的构建接口叫做ContentPipeline.BuildAssetBundles,它定义在UnityEditor.Build.Pipeline命名空间下,它的函数签名如下图所示。

我们可以看见,所需的参数为BuildParameters、BundleBuildContent以及BundleBuildResults,并且会返回一个ReturnCode,供查看构建的状态,例如:Success、Error、Canceled等。

  • BuildParameters提供一些构建参数,例如:构建的目标平台、输出路径、压缩格式等。

  • BundleBuildContent供SBP来使用被构建为Assetbundle的Asset列表。

  • BundleBuildResults保存了脚本编译以及AssetBundle构建的一些比较详细的结果。

与之对应,SBP仍然保留了传统的Build Pipeline,它被称为:LegacyBuildPipeline.BuildAssetBundles,使用方法和之前的构建脚本相同。

所以,我们可以写一个简单的脚本来分别使用二者构建一个Assetbundle,并在运行时进行加载。

我们可以发现一个很有趣的结果,那就是使用SBP构建的Asetbundle与传统的构建方式相比,是不生成mainfest文件的。

除此之外另外一个不同是,如果我们要使用传统的AssetBundle加载接口来加载AssetBundle资源,使用SBP构建的AssetBundle在loadasset时要传入该Asset的完整路径,而不能只是该Asset名字。

传入完整的路径来加载Asset稍显复杂,并且我们也希望能够在脚本中直接指定需要打包的Asset,这时我们就可以利用AssetBundleBuild来定义AB包的数据了,并且利用AssetBundleBuild数组来创建一个BundleBuildContent实例。

其中AssetBundleBuild的AssetNames字段中指明的Asset会被构建到这个Bundle中。除此之外,AddressableNames字段的值可以代替之前完整的Asset路径来加载对应的Asset。

如果不使用传统的资源加载API来加载资源呢?了解SBP的开发者,也一定也知道Addressable Asset System,现在让我们在Unity 2018中激活它。

同样我们修改Packages/manifest.json文件,将Addressable Asset System添加到依赖项中。

"dependencies": {

"com.unity.addressables": "0.2.2-preview",

}

这样我们就可以在工程中使用Addressable资源系统了。

注意:目前SBP和Addressable资源系统都还处于预览阶段,也就是说仍然会有大量的修改和变化。

资源参考:

  • 上文示例获取:

    https://github.com/chenjd/SBP_AssetBundles_Demo

  • SBP的文档:

    https://docs.unity3d.com/Packages/com.unity.scriptablebuildpipeline@0.0/api/index.html

  • Addressable资源系统的文档:

    https://docs.unity3d.com/Packages/com.unity.addressables@0.2/manual/index.html

Standard Assets

问题02:Unity2018.2安装包中没有Standard Asset选项,如果想要安装如何处理?

回答:在Unity2018.2版本中,通过Unity安装程序或Unity Hub来安装Unity时,可以发现Standard Asset选项消失了。

这是因为这套Standard Asset的版本比较老旧,可以追溯到Unity 5.0的版本。因此Unity的新版本会逐渐更换现有的Standard Asset资源。

你可以访问Asset Store资源商店下载老版本的Standard Asset,也可以考虑使用Unity新的2D和3D Game Kit,或者是Unity Learn上的其它示例工程。

资源下载:

  • Standard Assets

    https://assetstore.unity.com/packages/essentials/asset-packs/standard-assets-32351

  • 3D Game Kit

    https://assetstore.unity.com/packages/essentials/tutorial-projects/3d-game-kit-115747

  • 2D Game Kit

    https://assetstore.unity.com/packages/essentials/tutorial-projects/2d-game-kit-107098

Scripting

问题03:我想实现用Attribute对修饰的字段进行依赖注入来创建实例,所以希望这个Attribute能够获取得到它所修饰的字段的类型。

然后在Attribute构建实例的时候,顺便把它所修饰的类型也新建一个返回出去,赋值给它所修饰的这个字段,如何实现?

回答:你可以自定义一个Attribute,然后根据它修饰的对象类型来初始化对象。请参考:

https://answers.unity.com/questions/896763/custom-attributes.html

Graphics

问题04:Unity2018.2中勾选Shader的GPU实例化,发现即使同一光照贴图,如果渲染队列排序中,中间还隔着另外一个对象,也会导致拆分成多个批次。但是用静态批处理就不会有这种现象,如果场景排放的物体交错程度很高,GPU实例化效果就不理想,对这种情况有什么处理方案吗?

回答:这是有可能的,你可以查看Frame Debugger,如果没有合并成功,会有没有合并在一起的原因。例如:使用GPU Instance,但是不同的Mesh或Submesh,就会导致失败。

Unity 2018.1增加了GPU Instance对GI的支持,但是GPU instancing对硬件要求较高,因此对于场景中普遍出现的静态物体建议使用Static batch,这样可以兼顾到低端设备。

对于大量在高端机上出现的物体,例如:大量的草,树木这类物体可以使用GPU Instance,在低端机上可以进行剔除优化,或者不显示。

问题05:Unity可不可以使用球面谐波系数产生高光效果?

回答:球面谐波一般用来提供低频的光照信息,不是用来做高光的。它达不到高光细节的频率,你可以自定义着色器达到,但是高光会变化的非常平缓,建议使用反射球达到高光效果。

Visual Studio Code

问题06:我在Unity中使用Visual Studio Code可为什么不提示也不报错呢?

回答:当你打开的单独的一个cs文件,而不是整个工程就会出现这样的问题,如果正常加载的话,是没有问题的。请参考:

https://code.visualstudio.com/docs/other/unity

问题07:使用Unity 5.6.0f3,在Visual Studio中修改代码后,在Unity编辑器中看到依旧是没有改动的情况?

回答:这种问题通常是由于没有勾选Unity Preference中的Auto Refresh选项,在Unity Preference/General中勾选上即可。

小结

以上就是过去一周Unity官方社区交流群中比较有代表性的问题,其中有你关注的问题吗?

如果你也希望与Unity的技术工程师交流,欢迎加入Unity官方社区交流群:629212643 或访问Unity官方中文论坛(Unitychina.cn)!

推荐阅读

  • WebAssembly基准测试:加载时间和性能

  • 直播回顾 | 使用Unity ECS开发《我的世界》

  • 可编程脚本渲染管线SRP

  • Unity 2018.3 Beta版发布

  • Unity资源包管理器-全新项目管理方式

  • Unity Hub v1.0版发布

  • 2D游戏开发套件指南

  • 3D游戏开发套件指南

官方活动

直播预告 | Unity面部捕捉解决方案课程(第一期)

9月26日晚8点,Unity技术直播课程将带来Facial AR Remote面部捕捉解决方案系列课程的第一期,感兴趣的朋友赶紧预约吧![了解详情...]

直播课程:Facial AR Remote面部捕捉解决方案课程(第一期)

直播地址:https://connect.unity.com/events/unitychina-facialar

Unity官方教师培训报名火热进行中

Unity将在10月22-26日,举办为期5天的专业的Unity官方教师培训课程,诚邀广大教师与Unity一同学习分享最新技术![了解详情...]

报名地址:

https://connect.unity.com/events/2018jiaoshipeixun

Unity开学季|重磅教育活动来袭

九月开学季,Unity将在南京、南昌、上海开展重磅教育活动,欢迎教育领域的领导、专家、教师团队莅临交流![了解详情...]

优惠活动|Unity订阅新起航,开启您的创作之旅

现在访问Unity在线商店(store.unity.com),成功订阅Unity Pro专业版、Unity Plus加强版即可享受全新增值服务组合。11月18日之前订阅,更有指定插件资源限时赠送。[了解详情...]

活动地址:https://store.unity.com/cn

点击“阅读原文”访问Unity官方中文论坛

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
穆里尼奥都馋哭了!巴西世界杯最大浪费!安切洛蒂咋想的

穆里尼奥都馋哭了!巴西世界杯最大浪费!安切洛蒂咋想的

澜归序
2026-06-22 07:23:35
头条世界杯|贝兰万德封神!坚硬的不是球门,是这支伊朗的命

头条世界杯|贝兰万德封神!坚硬的不是球门,是这支伊朗的命

澎湃新闻
2026-06-22 07:12:27
难以置信,北京协和证实:40岁后男性最优运动,并非跑步撸铁

难以置信,北京协和证实:40岁后男性最优运动,并非跑步撸铁

华庭讲美食
2026-06-21 15:26:10
热身赛:中国男篮力克澳大利亚 王俊杰23+6+4赵继伟一度受伤

热身赛:中国男篮力克澳大利亚 王俊杰23+6+4赵继伟一度受伤

醉卧浮生
2026-06-21 21:20:31
女子被情人睡时,丈夫还要下跪,2018年他忍无可忍,杀死妻子情人

女子被情人睡时,丈夫还要下跪,2018年他忍无可忍,杀死妻子情人

汉史趣闻
2026-06-21 14:45:00
75岁爸爸照顾6岁女儿,74岁妈妈脑梗住院!坦言时间不够用,想多活几十年!网友吵翻

75岁爸爸照顾6岁女儿,74岁妈妈脑梗住院!坦言时间不够用,想多活几十年!网友吵翻

新民晚报
2026-06-21 19:36:03
在美国的球场内,33岁伊朗门将封神:7次扑救震撼7万人 挡出必进球

在美国的球场内,33岁伊朗门将封神:7次扑救震撼7万人 挡出必进球

风过乡
2026-06-22 05:54:04
小孔塞桑:C罗是榜样但没义务必须传给他,会传给位置更好队友

小孔塞桑:C罗是榜样但没义务必须传给他,会传给位置更好队友

懂球帝
2026-06-22 00:05:09
历史首次!联合国把以色列拉入黑名单!美国对犹太人的态度变了

历史首次!联合国把以色列拉入黑名单!美国对犹太人的态度变了

李云飞Afey
2026-06-21 19:38:22
「被WPS背刺了」冲上热搜!官方客服回应

「被WPS背刺了」冲上热搜!官方客服回应

鞭牛士
2026-06-21 15:40:08
大胜澳大利亚不足一小时!郭士强官宣:中国男篮最强援后天出战

大胜澳大利亚不足一小时!郭士强官宣:中国男篮最强援后天出战

童叔不飙车
2026-06-22 01:04:33
哈维回忆16岁梅西首训:全队看傻了!每个人都意识到一个怪物来了

哈维回忆16岁梅西首训:全队看傻了!每个人都意识到一个怪物来了

体育闲话说
2026-06-22 06:09:32
世界杯名场面:乌拉圭前锋正帮对手压腿,转身参与进攻,球队扳平

世界杯名场面:乌拉圭前锋正帮对手压腿,转身参与进攻,球队扳平

风过乡
2026-06-22 08:09:09
不光停发绩效,很多单位工资都发不出了!

不光停发绩效,很多单位工资都发不出了!

细说职场
2026-06-19 15:00:25
智谱市值首次突破1万亿港元,股价年内涨超20倍

智谱市值首次突破1万亿港元,股价年内涨超20倍

金融界
2026-06-22 10:11:59
知名上市公司副总裁交通事故去世,年仅40岁

知名上市公司副总裁交通事故去世,年仅40岁

封面新闻
2026-06-22 00:34:04
WPS被骂上热搜!占满C盘致电脑卡顿,商业套路被扒,遭网友怒斥!

WPS被骂上热搜!占满C盘致电脑卡顿,商业套路被扒,遭网友怒斥!

谭谈社会
2026-06-21 19:10:56
中纪委怒批:公务员也是人,正常生活不应问责处理!

中纪委怒批:公务员也是人,正常生活不应问责处理!

职场资深秘书
2026-06-21 13:59:22
2.5亿成本,《抓特务》预测票房仅1.39亿,冯小刚亏到怀疑人生

2.5亿成本,《抓特务》预测票房仅1.39亿,冯小刚亏到怀疑人生

电影票房预告片
2026-06-21 15:54:02
订单已排到8月,720万辆小电驴杀向全球,日本人这次是真坐不住了

订单已排到8月,720万辆小电驴杀向全球,日本人这次是真坐不住了

混沌录
2026-06-21 21:18:17
2026-06-22 10:27:00
Unity incentive-icons
Unity
Unity中国官方帐户
2482文章数 6733关注度
往期回顾 全部

头条要闻

"甲酰胺纸尿裤"调查记者:我只为那些检出甲酰胺的孩子

头条要闻

"甲酰胺纸尿裤"调查记者:我只为那些检出甲酰胺的孩子

体育要闻

18岁斩世界杯首球!亚马尔连创5大纪录

娱乐要闻

原来她就是张颂文老婆

财经要闻

这门“躺赚”的生意,要凉了?

科技要闻

SpaceX 74天闪电IPO,OpenAI能照搬吗?

汽车要闻

惊出冷汗!重庆实测奥迪A5L,华为智驾这波操作绝了…

态度原创

亲子
艺术
手机
本地
公开课

亲子要闻

爸爸在家给宝宝理发,套上袋子的瞬间,我差点问候他祖宗!

艺术要闻

310米!欧盟第一高楼,坐落于波兰

手机要闻

麒麟9050系列芯片被曝首批备货有限,网友:华为Mate90又要抢?

本地新闻

龙腾资江 韵动邵阳

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版