这篇博客源自我在泰课在线的回答。链接:http://www.taikr.com/group/1/thread/92

问:请教一下NGUI的图片转换问题

    1、NGUI能不能把导入的方形图片转成圆形的(因为技能图标大多方形,手动ps比较慢)。

    2、NGUI假设导入的图片是圆形,那么用Box Collider却是方形碰撞,用圆形碰撞感觉检测不出,是怎么回事..

答:

问题一:NGUI能不能把导入的方形图片转成圆形的(因为技能图标大多方形,手动ps比较慢)。    

  下面是我改写的NGUI自带的名为nlit/Transparent Colored的shader,经测试完美运行。

  Shader "Unlit/Transparent Colored"
  {
    Properties
    {
      _MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {}
    }
    SubShader
    {
      LOD 200
      Tags
      {"Queue" = "Transparent"  "IgnoreProjector" = "True" "RenderType" = "Transparent"}
      Pass
      {
      Cull Off
      Lighting Off
      ZWrite Off
      Fog { Mode Off }
      Offset -1, -1
      Blend SrcAlpha OneMinusSrcAlpha
      CGPROGRAM
      #pragma vertex vert
      #pragma fragment frag 
      #include "UnityCG.cginc"
      sampler2D _MainTex;
      float4 _MainTex_ST;
      struct appdata_t
      {
        float4 vertex : POSITION;
        float2 texcoord : TEXCOORD0;
        fixed4 color : COLOR;
      };
      struct v2f
      {
        float4 vertex : SV_POSITION;
        half2 texcoord : TEXCOORD0;
        fixed4 color : COLOR;
      };
      v2f o;
      v2f vert (appdata_t v)
      {
        o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
        o.texcoord = v.texcoord;
        o.color = v.color;
        return o;
      }
      fixed4 frag (v2f IN) : COLOR
      {
        float2 center = (0.5f, 0.5f);
        float dis = distance (IN.texcoord, center);
        fixed4 col = tex2D(_MainTex, IN.texcoord) * IN.color;
        if(dis > 0.5f)
        {
          col.a = 0;// 或者使用discard
        }
        return col;
      }
      ENDCG
    }
  }
  SubShader
  {
    LOD 100
    Tags
    {"Queue" = "Transparent"  "IgnoreProjector" = "True"  "RenderType" = "Transparent"}
    Pass
    {
    Cull Off
    Lighting Off
    ZWrite Off
    Fog { Mode Off }
    Offset -1, -1
    ColorMask RGB
    Blend SrcAlpha OneMinusSrcAlpha
    ColorMaterial AmbientAndDiffuse
    SetTexture [_MainTex]
    {
      Combine Texture * Primary
    }
  }
}
}

     上面红色部分为改动过的地方。这个shader的使用只能用于NGUI所建的Texture上,不能用于Sprite上。原因是Sprite使用的Shader是Atlas材质使用的Shader。

问题二:NGUI假设导入的图片是圆形,那么用Box Collider却是方形碰撞,用圆形碰撞感觉检测不出,是怎么回事..

   1. NGUI的碰撞检测可以使用多种类型的碰撞器,包括2D碰撞器和3D碰撞器。

2. 你在问题中提到使用圆形碰撞器无法检测,不知你说的是Sphere Collider还是Circle Collider 2D, Sphere Collider其实是球形碰撞器,用于3D,而Circle Collider 2D才是圆形碰撞器,用于2D。

3. 如果使用Sphere Collider,那么你需要将UI Root 下的Camera的UICamera 组件的Event Type属性设置为3D World或3D UI。另外,你需要调节Sphere Collider组件的Radius(半径)属性的大小,以适应图片的大小。

4. 同样,如果使用Circle Collider 2D,那么你需要将UI Root 下的Camera的UICamera 组件的Event Type属性设置为2D World或2D UI。另外,你同样需要调节Circle Collider 2D组件的Radius(半径)属性的大小,以适应图片的大小。

5. 根据以上分析,你的问题就应该在于没有正确设置Event Type或是Radius属性。

6. 个人认为,矩形图片适合使用Box Collider或Box Collider 2D;

圆形图片适合使用Sphere Collider或者Circle Collider 2D;

不规则图片适合使用Polygon Collider 2D。

转载于:https://www.cnblogs.com/EndOfYear/p/4002842.html

Unity问答——请教一下NGUI的图片转换问题相关推荐

  1. unity加载sprite_UGUI中将图片转换成精灵Sprite

    上一篇中讲述了NGUI动态打图集的功能,提到UGUI将图片转换长Sprite格式,其实网上也有好多,那我在这简单的说一下,using UnityEngine; using System.Collect ...

  2. Android图片转换

    Drawable.Bitmap.byte[]之间的转换 最近想试试从Android部分获取一张图片在Unity中进行显示,需要将图片转换为byte[]格式,借此机会整理一下Android的图片转换,即 ...

  3. 【OpenCV】图像/视频相似度测量PSNR( Peak signal-to-noise ratio) and SSIM,视频/图片转换

    目录 1 目标 2 原理 2.1 图像比较 - PSNR and SSIM¶ 3 代码 3.1如何读取一个视频流(摄像头或者视频文件)?¶ 3 运行效果 视频/图片转换: 如何用OpenCV创建一个视 ...

  4. java png 转jpg_怎么用java将png图片转换成jpg格式的图片

    png是一种背景透明格式的图片,大量用于网络上,保真性很好,JPG是压缩图片,占用空间少.但有一些失真,所以在将png图片转换成jpg图片之后,肯定是有一些差异的,毕竟这是两种不同的格式. 下面用一个 ...

  5. c 将图片存入到mysql数据库中_如何将图片转换存入到数据库中,并从数据库中取出转换成图片...

    有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来. 首先,我们要把图片存 ...

  6. python 怎么将数组转为列表_图片转换成pdf格式怎么操作?什么软件能将图片转为pdf?...

    伙伴们好,你们知道如何把图片转为pdf格式吗?前一阵子我参加了一个家居行业大会,在会议上拍摄了不少会议照片,包括主持人讲话.嘉宾出席.观众提问.产品推广等环节都拍摄了不同的角度.拍摄好后,需要传送给写 ...

  7. xsd文件转图片_图片转换成PDF格式怎么转?图片转换成PDF的软件哪个好?

    图片转换成PDF格式怎么转?经验丰富的设计师在完成图片格式的设计作品后都会将图片转成PDF格式文件,这样方便保存以及参加一些设计比赛.同时我们在保存大量图片的时候也可以将图片转换成PDF文件.但是还有 ...

  8. mp3 音频 音乐 tag ID3 ID3V1 ID3V2 标签 读取信息 获得图片 jpeg bmp 图片转换(上)

    看到标题估计有人懵了,不过对于用到的人可以说是眼前一亮啊.做了点这个小东西,断断续续的花了我好长时间.本来不想写,但是网上的资料都是坑爹呢. 中国的抄袭果然是根深蒂固啊.上到机构.砖家.公司,下到各种 ...

  9. 在WPF中将图片转换成3D图像并可以旋转

    原文:在WPF中将图片转换成3D图像并可以旋转 时光偷走的,永远都是我们眼皮底下看不见的珍贵. https://pan.baidu.com/s/14dk-OU2SR0nxXj2bL4bVpQ 首先先看 ...

最新文章

  1. 几行代码实现神奇移动的过渡动画
  2. 解决nodejs环境下端口号被占用的方法
  3. C和指针之删除字符串第一次出现的子串
  4. Linux进程通信之mmap
  5. Linux系统编程32:进程信号之详解信号集操作函数(sigset_t ,sigpending,sigprocmask)
  6. li下的ul----多级列表
  7. [转]JAVA 在main中访问内部类、方法等
  8. /usr/include/pcap/pcap.h源码
  9. RubyonRails是WebDev最佳选择的5个原因
  10. java 火星坐标转wgs84_火星坐标、百度坐标、WGS84坐标、墨卡托投影坐标相互转换...
  11. 最近抖音超火的60帧高清视频制作教程
  12. php ma,第十四届萌芽杯优秀作品展示第一期
  13. 强烈推荐代码生成器Cursor
  14. [BZOJ3441] 乌鸦喝水
  15. 搭建一套基于 Groovy 规则引擎的业务风控平台
  16. 7月20日到12月3日
  17. 【大数据】MaxCompute概述
  18. 项目上线前出Bug,测试人该如何调整心态
  19. java计时器_Java实现的计时器【秒表】功能示例
  20. 算算新税率比老费率少扣多少钱 --- 2018年10月1日 新的税收费率改革

热门文章

  1. 2019国网二批计算机类分数线,最新数据分析:2019国网第一批次公示名单这些学校最吃香!...
  2. 华硕笔记本节能证书_有这本证书的人恭喜啦,国家正式要求,企业必备
  3. http://www.baidu.com/cb.php?,存在劫持风险的第三方JS地址
  4. 一、Qt初尝试,做一个QT计算器《QT 入门到实战》
  5. iOS中的时间和日期
  6. 唯品会怎么样_陕南赤子_新浪博客
  7. 个人购买的域名(需要公网服务器)快速配置免费的HTTPS证书【有手就行】
  8. 打造爆款时怎么做淘宝付费推广?
  9. 退出mysql命令_进入mysql命令行之后,怎么退出
  10. 【数据结构】各种数据结构的简单特点