手游推送方案

栏目: 后端 · 发布时间: 6年前

内容简介:这是第155篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。UWA 问答社区:answer.uwa4d.comUWA QQ群2:793972859(原群已满员)

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

UWA 问答社区:answer.uwa4d.com

UWA QQ群2:793972859(原群已满员)

本期目录:

  • 手游推送方案
  • Unity UI特效和前端的沟通问题
  • 低端机上是否要开启多线程渲染
  • RenderTexture在手机端内存变大
  • 自己实现Text描边引起DrawCall增加问题

Android

Q:例如《率土之滨》和《部落冲突》这种游戏,如果你的主城被别人打了,手机上会收到推送通知说有人在打你。有个问题就是游戏已经杀死掉了,为什么还能收到这个通知?这种是实时的通知,不是定时那种,请问下这种要怎么做?

A1:这种准确推送时间客户端是计算不出来的,所以还是得依靠服务器。Android这块以前用过极光推送,还行。iOS有提供服务器推送方案。大概原理就是,我们的服务器通知(苹果的服务器或者极光的服务器)再转向玩家进行推送。

感谢雨松MOMO@UWA问答社区提供了回答

A2:腾讯的信鸽也可以,推送分服务器推送和本地推送。一般这种需求我们需要本地推送,iOS系统本身支持这种推送。安卓并没有对应的API,需要自己启动Server,并与某系统进程绑定,才能保证进程不被杀掉,但是现在各大厂商都自己制定系统,很难做到这一步,也有部分厂商的App在系统白名单里,后台进程不会被杀掉。

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

资源管理

Q:我们的游戏现在有很多UI特效给特效去用Animation和粒子做,但是有个问题是,他们做很难注意性能问题,而且我一旦改变一些属性,又得重新让它K帧,这样做下来交流成本很高,不知道有没有什么好的解决方案?

A1:我是这样做的,就是美术做的特效Prefab程序不直接用,而是提供一个 工具 供他们导出生成一个新的Prefab。

这样的好处就是导出的时候可以进行检查,比如检查贴图数量、粒子数量、动画等等,我们可以提前定好UI粒子特效的标准,导出的时候发现资源不符合规范或者有问题,就给他们提示错误,Prefab不予以导出。这样美术就无法上传SVN程序,就不会更新到有问题或者有效率问题的特效。

其实这个思路不仅特效可以用,UI界面、角色、场景等等,我都是这么做的,Prefab自动生成的同时还可以做一些额外的逻辑。

感谢雨松MOMO@UWA问答社区提供了回答

A2:我和楼上的做法类似,不能用导入器强制规范的资源,每天凌晨打包机启动一个资源扫描动作。把不符合规范的扫出来生成报告。

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

A3:我的思路:

自己编写Timeline编辑器(Unity,Unreal官方也可),在编辑器中将美术相关的操作范围规范好,例如播放单粒子特效时的个数及模型、动画、材质等资源使用范围,最终在生成特效数据时,再进行资源和数据检查以及资源整理,避免资源冗余及不规范。

优势:

1、资源和数据剥离,各资源间没有耦合,可快速修改和调整;

2、数据在编辑模式下可共用、也方便联合制作,可快速处理冲突;

3、模板化特效,大大提高开发效率。

两点需要注意:

1、FBX资源冗余,Unity默认关联模型、动画资源为FBX路径。我采取的策略是,将使用到的资源,从FBX中提取,制作成Asset文件(Unity本身也是这么做的,只不过帮他提前做了而已,也会提高打包速度),将Timeline上的资源依赖换成新生成的资源。

2、编辑器本身尽量做好回放功能(尤其是粒子)。

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

渲染

Q:多线程渲染到底是开还是不开呢?在低端机,比如红米Note2开多线程渲染有帮助吗?还是说直接关闭比较好?

A1:题主不妨在红米Note2上具体测试下,看下开关的之后的性能差异。了解到现在挺多大型的ARPG都开启了多线程渲染。

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

A2:对于目前中国市场的手游,都建议开启多线程渲染功能,不仅可以大幅降低主线程上渲染模块的压力,同时还可以极大降低纹理、Mesh和Shader等资源加载的耗时。

当然,没有一种方法是一本万利的,也有它一定的限制和问题,具体我们之前碰到过的问题,可以直接在UWA问答里搜索多线程渲染进行查看。

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

RenderTexture

Q:RenderTexture AA设为1 depth是0,在PC端内存大小是对的,到手机端内存增长了三倍左右,为什么呢?

A1:三倍不太应该,建议通过UWA GOT Online服务或者UWA线上深度测评来查看每个RenderTexture的具体参数,分辨率、格式等参数是否正常。

该回答由UWA提供

A2:内存有变化可能是因为分辨率,RenderTexture的大小是跟着分辨率走的,你比较下你在PC上看的RenderTexture分辨率和手机上RenderTexture分辨率分别是多大。

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

UI

手游推送方案
Q:如图,我们项目自己实现的文字描边,按照我对Unity的合批理解,应该是2个DrawCall,但是实际却是4个,猜测应该是TextShaderOutline的ModifyMesh函数中SetUIVertex方法导致合批失败。如果是,不知道原理是什么?有没有更好的解决方案呢?

功能地址 TextureShaderOutline.rar

A:你这个方案和 这个 有点类似,且做过改进吧。我看了你们只使用了一个材质球。不过我这边Unity版本低一些,你的方案打开有点乱,感觉显示有问题,我把红色字左右拖动,颜色会变,很奇怪。

用博客上原方案,我试了这种叠加的情况能合批(前提是材质球用同一份,颜色不一样,就会是2份材质球了)。

我再针对Unity 2018,调整了一下方案,看看是不是满足你们的需求:

Unity 2018能传递UV2、UV3,然后tangent.zw normal.z 也勉强可以用一下,所以用UV1、UV2存放最原始的UV区域(裁剪用),UV3、tangent.zw传递outlinecolor,normal.z传递outlineborder,这样颜色和宽度变化就不需要改材质球,就能合批了。(注意z轴方向不能缩放,且UI和所在canvas要平,否则tangent.z和normal.z传递会不准确)

参考项目 test2018_1_outline.rar

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

题主补充:我们这边将ModifyMesh方法中去掉position的上传,就可以合批了。

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

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

官网:www.uwa4d.com

官方技术博客:blog.uwa4d.com

官方问答社区:answer.uwa4d.com

官方技术QQ群:793972859(原群已满员)

封面图来源于网络


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Distributed Systems

Distributed Systems

Sukumar Ghosh / Chapman and Hall/CRC / 2014-7-14 / USD 119.95

Distributed Systems: An Algorithmic Approach, Second Edition provides a balanced and straightforward treatment of the underlying theory and practical applications of distributed computing. As in the p......一起来看看 《Distributed Systems》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具