zoukankan      html  css  js  c++  java
  • Unity+NGUI中关于多分辨率对应多套资源的解决方案

    游戏初始的资源总是做到最高清的,但是其实低端设备没有那么好的分辨率,也没有那么多的内存支持,所以通常就会希望对这些设备做一套低清资源。前面谈到过Cocos2d-x结合CocosBuilder的解决方案,现在发现Unity+NGUI也有对应的做法。

    首先明确一个概念就是在这个解决方案中,不管是高分辨率还是低分辨率下,对于一个控件而言,控件自己的尺寸是固定的,变化的是两套atlas。

    对于atlas而言,首先png尺寸上是差了一半,然后所有sprite类似于uv这样的位置大小参数,也变化成一半,最后有一个叫Pixel Size的参数,要变成两倍。如果贴图缩小了一半,那么贴图里一个像素占的位置就应该增加一倍,所以注意保持各款配置中,贴图尺寸*PixelSize的值一样就行了。

    接下来对应使用了atlas的ui prefab,我们可以写代码自动生成一份half版本,把所有的贴图引用改成指向half贴图。其实在NGUI里面还提供了另一种解决方案:atlas除了标准版之外,还可以选择一种引用版,专门用于指向具体的标准atlas。可以在ui prefab里面全部使用这种引用atlas,然后再根据具体情况指定引用atlas指向正确的版本。

    这个做法有个问题就是如果想在平时的工作中看到效果,引用atlas必定要已经指向某个版本。但是最后如果这样直接打包,那么载入的时候,会先载入已经指向的版本,再载入正确的版本。所以官方推荐做法是在做版本之前,把这些引用atlas的指向都先清空。我觉得还好,但是同事觉得麻烦,目前就还是用的代码自动生成half版本的解决方案。

  • 相关阅读:
    habse与Hadoop兼容性问题
    java读取TXT文件(硬核区分编码格式)
    ffmpeg相关用法
    java服务器间http通讯,同时传输文件流和数据,并接收返回的文件流或数据
    js 获取正整数各个位上的数字
    解决Input输入中文重复出现拼音
    为什么 io 包一般以 byte 数组做为处理单位?
    Vue3 + Ts 封装axios
    Vue3 ant design 使用Moment.js日期格式化的实现
    Vue3 NProgress进度条
  • 原文地址:https://www.cnblogs.com/unionfind/p/3592026.html
Copyright © 2011-2022 走看看