热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

项目中的问题与解决方案

问题1资源释放解决方案:1首先要求美术所有的图集下不要出现相同名的精灵,这个在最开始就应该告知美术,不然后期修改的时候,

问题1 资源释放

解决方案:

1 首先要求美术所有的图集下不要出现相同名的精灵,这个在最开始就应该告知美术,不然后期修改的时候,美术和程序都麻烦,命名应该遵循一个规范。只要每个精灵的名字都不一样,后面改精灵图的时候,程序这边就可以在代码中全局替换,快速高效,当人,如果精灵图名字有部分配置在配置表中,则需要手动去找出来然后修改了。

2 把图集进行整理,将专用性的精灵整理到专用的图集下,公用精灵则放到公用图集下,公用图集个数尽量在3个以下,对专用性的图集进行动态加载和释放。


问题2 界面的快速实现

解决方案:

1 让美术将界面制作成预设

2 编写一个工具,可将预设直接转换成代码(高端做法)

3 或直接加载美术的预设


问题3 降低draw call

解决方案:

只要物体的变化和材质相同,GPU就可以按照完全相同的方式进行处理,即可以把它们放在一个draw call中。draw call batching技术的核心就是可见性测试之后(可见性就是摄像机看的见的就渲染,看不见就不渲染),检查所有要绘制的物体的材质,把相同材质的分为一组(一个batch),然后把它们组合成一个物体(统一变换),这样就可以在一个draw call中处理多个物体了(实际上是组合后的一个物体)。综上,就是合并贴图材质,对可合并的材质对其ui设置相同的层(depth)


问题4 新手引导

解决方案:

针对新手引导一套框架,具备新手引导所需的常见的UI接口,新手引导走配置,节点管理、上报、执行等操作统一化。


问题5 UI风格统一问题

解决方案:

早起就应该制定好UI规范,程序这边封装好相应的规范UI创建接口,后续不是非常特殊的情况,都使用这些规范的接口进行UI创建,当然美术在出预设的时候,也必须遵循这些UI规范


问题6 UI层次问题

解决方案:

通过多个摄像机渲染,通过panel分层


问题7 分辨率适配问题

解决方案:

以1280x720为标准,计算出x和y的拉伸比

float screenFactorX = Mathf.Max( Screen.width*1.0f / Screen.height / (1280f / 720f), 1.0f);

float screenFactorY = Mathf.Max( (1280f / 720f) / (Screen.width*1.0f / Screen.height ),1.0f);

如果要搞一个铺满全屏的UI,则UI的宽高分别设为1280,720,然后对它的localScale进行缩放,x缩放screenFactorX ,y缩放screenFactorY


问题8 代码混淆

解决方案:

尽量不要使用函数名字符串(反射)

比如EventDelegate、HoTween、Invoke、协程、Animation帧事件。如果使用了字符串反射,则需要在混淆中过滤出来。

针对Animation的帧事件,可以专门写一个帧事件监听脚本(对此脚本不进行混淆),素有Animation帧事件都使用这个脚本进行事件监听


问题9 财富同步问题

解决方案:

前后端统一一个财富的操作协议,各个模块的财富变化,都通过该协议同步或加减,对于变化比较频繁的模块,可以考虑通过相应的协议返回同步的财富,不额外走同步协议


问题10 头像缓存问题

解决方案:

头像通过链接从远程下载后,会在本地可写目录下保存,并缓存在内存中(有一个头像管理器),每次需要创建头像,都首先从头像管理器内存中查找,如果没有,则从本地文件中查找,如果还没有,再根据链接去远程下载。本地头像需要定期清理,建议1天自动清理一次。








推荐阅读
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 本文将详细介绍Fuel CMS如何基于CodeIgniter框架构建,包括其单入口模式的实现方式及关键配置文件的作用。通过分析本地环境中的index.php和.htaccess文件,我们将更好地理解Fuel CMS的核心架构。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • PCIe中的弹性缓冲原理解析
    PCIe是一种高速串行总线,其传输信号为差分信号,并采用同步传输方式。然而,PCIe并没有专用的同步时钟。本文将详细介绍PCIe中的弹性缓冲(Elastic Buffer)原理,探讨其如何处理时钟差异,确保数据传输的稳定性和可靠性。 ... [详细]
  • 解读基因集富集分析(GSEA)结果及应用
    本文详细介绍了基因集富集分析(Gene Set Enrichment Analysis, GSEA)的基本原理,以及如何通过GSEA分析结果来解析基因表达数据。此外,还提供了使用R语言进行GSEA分析的具体方法。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
author-avatar
mobiledu2502908023
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有