项目初期如何确定美术规范

项目初期如何确定美术规范

1)项目初期如何确定美术规范
2)Addressable Assets遇上Post Processing的问题
3)VideoPlayer使用Addressable加载异常
4)UGUI Image如何设置颜色更为高效
5)PBR材质在Editor和手机中表现的效果不一致


这是第206篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Asset

Q:在项目初期,没有任何正式美术资源的情况下,如何给美术一个美术资源制作的规范?现在只有一些基本的策划构想,例如:项目定下目标人群,最低兼容手机价位,同屏可见角色数,场景大小,视野范围。

如何给到美术适当的美术资源制作限制,例如:角色的面数,角色的贴图数量、大小,角色的骨骼数量、动画数量及时长;场景的面数,场景的贴图数量、大小。

我明白,就上面的策划需求不能得出一个精确的制作规范,只是想要一个大概的推算方式,给出一些大概的参数,好让美术有规范可以参考。不知是否能给些指引?

美术也可以按他们想要的精度先制作部分角色和场景,但如果只有有限种类的资源,有方法测算出这个精度在性能允许范围(也就是说这个精度满足策划需求,可以作为美术制作规范)吗?

例如:只有一个角色(5000面,512贴图三张,80根骨骼),策划同屏要求20个,就弄个场景摆20个一样的角色进去(因为只有一个),如果目标手机不崩溃,以后的角色的制作就按这样做。这样可以验证这个精度吗?

A:这个问题提问至今已有三年,今天终于可以尝试回答一下了。这几年来类似“规范”问题应该算是我们最被经常问到的问题之一了。这是一个很难的问题,难点在于“没有大一统的标准”可使用,因为这个资源规范设定要参考的因素很多,比如:

  • 游戏类型不同,规范很难相同
    MMO超大场景游戏的资源规范和棋牌游戏的资源规范显然不能混为一谈。
  • 团队人员不同,规范标准也是众口难调
    团队不同,也就意味着团队人员的能力和经验在团队层面上是千差万别的,大家的经验和认知都不可能一样,所以,对于规范标准的制定自然也有很多不同的理解。
  • 开发时间不同,规范标准自然要随之调整
    十年前的移动设备和今天的设备相比,其计算能力已经完全不可同日而语。除此之外,引擎的不断更新、技术的不断迭代,规范标准也都需要不断调整。

基于以上几点,美术资源的规范确实是行业难题,且目前基本上都是团队内部自行设定。

对于这个问题,UWA一直在思考,是否有较为可行的方案来推进这一问题的完善和解决。为此,我们推出了“UWA本地资源检测”这一工具来帮助大家来检测和分析项目团队中普遍需要的资源重要参数。同时,我们通过大量的项目测试数据来不断分析和调整相关的规范阈值。


就像大家的引擎开发版本一样,我们无法告诉大家哪个引擎版本是最好的,但我们可以告诉大家哪个引擎版本是商业游戏中使用最多的。同样,我们无法告诉大家哪种规范阈值的设置是最合适的,但我们可以告诉大家哪种阈值设定是大家商业项目中使用最多的。同时,我们根据几百款项目的测试数据进行了分析,总结出了十种最为常见的游戏类型的规范阈值设定,希望能让大家可以根据自身项目的类型来进行更为精准的设定。

这些阈值数值都是在不断更新的,随着时间不断推演,设备计算能力会变得更强,研发团队人员的能力和经验也会变得更足,而这些各种游戏类型的行业阈值也会不断地进行调整,这样,更多的独立开发者或开发团队也可以在不知不觉的演变中不断受益了。

该回答由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5941544c18d35e654e3e2373


Addressable

Q:项目版本
unity@2019.3.7
com.unity.addressables@1.1.10
com.unity.postprocessing@2.3.0

问题说明
最近试用了Addressables资源管理系统,场景中使用了Post Processing,在打包多个场景采用如下设置:

当遇到重复资源,预设,Shader时,期望是能够进行拆分,对公共资源进行依赖拆分,但是在AddressableAssetSettings.BuildPlayerContent() 之后,打出的多个场景包,各包含一套Post Processing资源。

这让人很尴尬,依赖不能拆?试过ShaderBinder方案,试过CollectShaderVariants,挂载Preload Shader等方案,依然是多份。

A:当再次开新工程进行测试,又读了Addressables源码后找到了方案,原来打包之前,需要对Addressables Settings制作一波AddressableAnalytics,按照AnalyzeRules进行分析之后。会有如下显示:

提示黄色感叹号的资源是可以拆分依赖包的资源。执行“Fix Selected Rules”对问题进行修复。


修复之前


修复之后

可以看到,已经提取了一个新的Group,这个Group是依赖资源,打包之后,会把其单独拆出来。

对比图:


提取公共包之前


提取公共包之后

自此才把Addressables打包流程正确体验完毕。

感谢题主debugger@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5ed6870e2f683c47055428c2


Addressable

Q:VideoPlayer在安卓使用Addressable加载Clip无法播放,Group已经设置为不压缩,但是播放不了。



A1:可以参考https://forum.unity.com/threads/load-videoclip-in-assetbundle-on-android.466850/page-2,里面有讲到AssetBundle缓存的时候是否开启压缩。在Awake中设置缓存不压缩,亲测有效;但是有没有其它副作用,就没做测试了。

    void Awake()
    {
        Caching.ClearCache();
        Caching.compressionEnabled = false;
    }

感谢Xuan@UWA问答社区提供了回答

A2:安卓下直接加载打成AssetBundle的音频文件我没成功过,但是有两个方法解决:

不打成AssetBundle包,因为本身视频文件就压缩过了,打成AssetBundle包并不会减少大小,然后直接用VideoPlayer的借口.url指向本地文件路径或者网络路径。(这里路径最后文件名的后缀必须是unity可以解析的后缀名,不能修改成其他名字,不然播放不成功)
用GameObject挂上VideoPlayer组件,然后指向这个Clip,把Object做成Prefab预设打包,这样安卓下加载预设是可以播放成功的。

以上两种方案我都在项目上使用过,版本是2018.4.13以上的LTS版本。

感谢简单就好@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5ecf6db5979400061e5453a8


UGUI

Q:UGUI Image设置颜色可以直接设置Color,也可以通过CanvasRenderer的SetColor接口设置颜色。我测试如果透明度为0,后者Draw Call和顶点数更少。那么CanvasRenderer的SetColor有什么缺点吗?还是说可以直接把Image的Color用这个接口设置?

A1:Alpha=0是因为做了特殊处理,不绘制。
感谢fzt-204067@UWA问答社区提供了回答

A2:做了一个测试,发现CanvasRenderer.SetColor也是会导致网格重建的,猜测应该是和Image.color赋值一样直接修改顶点色,所以调用这个接口的时候也是要考虑会不会影响网格重建的耗时的。有另外一种修改颜色的方法,通过Shader里面的_Color属性来修改颜色,这样不会造成网格重建,但是需要创建一个Material,所以会多一个Draw Call,有利有弊。
代码大致如下:

void Awake()
Image img = GetComponent<Image>();
Material mat = Instantiate(img.material);
img.material = mat;
Color c = new Color(Random.value, Random.value, Random.value);
mat.SetColor("_Color", c);

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5ec24cca979400061e5452b3


Rendering

Q:PBR材质在Editor和手机中表现的效果不一致,主要差异是Specular反光效果。目前PBR反光和反射使用的是Metallic的RGB通道和Alpha通道,RGB通道控制高光,Alpha控制反射强度。

现在不正确的效果是手机端像全身涂了油一样,而Editor是正常的。请问如何让手机端和Editor端显示一致?


手机端


Editor端

A:作为Metallic数据的贴图一般不勾选sRGB,因为需要在线性空间计算。可能是编辑器和手机对应的贴图设置不一致造成的。

感谢黄程@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5ed8d1a6df911b36c7ec0d92

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)