位置: 编程技术 - 正文

Unity3D在NGUI中使用mask(unity ngui)

编辑:rootadmin
过程是这样的:最近一直想做一个头像的mask效果,后来发现原来unity的mask需要用shader来写,网上找了不少资料,也能实现,不过大多数都是用render texture作为相机投影的texture。然后把这个相机的图像作为一个material,然后在ngui中创建一个texture,把这个material赋给texture。怎么说呢,这种方式虽然也能实现,但是必须要创建一个相机,对于一个大型项目来说有点不切实际。一个头像加个mask多简单的一件事,肯定有更好的办法。最终还是找到了一种很好的方法,这种方法更接近想象中的方法,废话不多说了,跟我一步步做吧!首先,我们需要新建一个shader。然后给他添加下面的代码。在project试图中,右键->Create->Shader,新建一个shader,名字随便。Shader "Unlit/Transparent Colored with mask" { Properties { _MainTex ("Base (RGB), Alpha (A)", 2D) = "white" {} _AlphaTex ("Yeahyeah", 2D) = "white" {} } SubShader{ LOD Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } Pass { Cull Off Lighting Off ZWrite Off Fog { Mode Off } Offset -1, -1 ColorMask RGB AlphaTest Greater . Blend SrcAlpha OneMinusSrcAlpha ColorMaterial AmbientAndDiffuse SetTexture [_MainTex] { Combine Texture * Primary } SetTexture [_AlphaTex] { Combine previous, texture } } }}复制代码顺便说下shader吧。太官方了可能不好理解,大概意思就是,在渲染的时候shader规定了某些规则,这些规则往往是用来实现某些炫酷的特效,或者为了某使些功能更高效。代码中的Properties相当于unity脚本中的公共变量,当把shader赋给某个material时这些变量就能想出来,你可以给他赋&#; ,跟unity脚本基本一样。代码中的SubShader是子渲染器,这里面就能访问到前面设置的变量,这里主要是实现shader功能的地方,当然你还可以在这里面定义函数,等等,但是函数是用的一种叫Cg / HLSL的语言。Pass,是渲染通道。这里可以设置一些参数来规定渲染方式。好了我们接着做mask。如果shader代码能看懂的话,基本你也就会做了。它主要做了两件事:1,给两个texture赋&#;,其实就是两张图片。2,把_AlphaTex中不透明的像素和_MainTex中的像素输出,其实就相当在MainTex中抠出一个AlphaTex中不透明的那部分形状一样的图块。其实刚开始我搜到了不少shader,很多都没有提到怎么使用,下面来看一下其实很简单,点击建好的shader在inspector面板中你会看到顺便说下shader吧。太官方了可能不好理解,大概意思就是,在渲染的时候shader规定了某些规则,这些规则往往是用来实现某些炫酷的特效,或者为了某使些功能更高效。代码中的Properties相当于unity脚本中的公共变量,当把shader赋给某个material时这些变量就能想出来,你可以给他赋&#; ,跟unity脚本基本一样。代码中的SubShader是子渲染器,这里面就能访问到前面设置的变量,这里主要是实现shader功能的地方,当然你还可以在这里面定义函数,等等,但是函数是用的一种叫Cg / HLSL的语言。Pass,是渲染通道。这里可以设置一些参数来规定渲染方式。好了我们接着做mask。如果shader代码能看懂的话,基本你也就会做了。它主要做了两件事:1,给两个texture赋&#;,其实就是两张图片。2,把_AlphaTex中不透明的像素和_MainTex中的像素输出,其实就相当在MainTex中抠出一个AlphaTex中不透明的那部分形状一样的图块。其实刚开始我搜到了不少shader,很多都没有提到怎么使用,下面来看一下其实很简单,点击建好的shader在inspector面板中你会看到从project视图中把两张图片拖上去就可以了。MainTex是你要显示的图片AlphaTex是你要抠图的形状,注意这张图除了形状可以用任何颜色以外其他必须都是透明的,而且图的大小要跟MainTex图片一样大。最后就是使用了,用NGUI创建一个Texture,把shader拖到UITexture脚本的shader变量中,你会发现兴奋的事情发生啦!!最终效果如下:

推荐整理分享Unity3D在NGUI中使用mask(unity ngui),希望有所帮助,仅作参考,欢迎阅读内容。

Unity3D在NGUI中使用mask(unity ngui)

文章相关热门搜索词:unity3d documentation,unity3d ui,unity3d gui,unity3d gui,unity3d怎么用,unity3d ui,unity3d怎么用,unity3d gui,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity3D游戏开发之虚拟现实项目开发流程 一、系统设计与资料的收集与整理1.与项目投资单位沟通并进行系统设计;2.收集整理规划图、效果图、现场照片;3.拍摄比干文化及景区介绍的专题片

unity游戏开发之游戏过审后 国行PS4将在3月日发售 报道/昨日,索中国官方网站公布,PlayStation4和PlayStationVita简体中文版游戏将于3月日同步发售。这两款游戏机此前计划于年1月日发售,后因传闻中

初尝2D骨骼动画编辑工具SPINE 一、SPINE使用研究2D骨骼动画,CYou的朋友介绍我SPINE这个工具,开发自EsotericSoftware的一款专门制作2D动画的软件,网络上的资料还很少,我这从半吊子美

标签: unity ngui

本文链接地址:https://www.jiuchutong.com/biancheng/382639.html 转载请保留说明!

上一篇:法线贴图技术(法线贴图使用)

下一篇:Unity3D游戏开发之虚拟现实项目开发流程(Unity3D游戏开发(第2版)pdf)

  • PHP文件注释标记及规范小结(php文件注释标记是什么)

    PHP文件注释标记及规范小结(php文件注释标记是什么)

  • EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本

    EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本

  • php求数组全排列,元素所有组合的方法总结(php对数组进行排序)

    php求数组全排列,元素所有组合的方法总结(php对数组进行排序)

  • 详解DB2 sqlstate 57016 SQLCODE=-668 原因码

    以上所述是小编给大家介绍的详解DB2 sqlstate SQLCODE=- 原因码 "7"错误的快速解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

    SQL Server 数据库分离与附加 就这么简单! 一、概述SQLServer提供了分离/附加数据库、备份/还原数据库、复制数据库等多种数据库的备份和恢复方法。这里介绍一种学习中常用的分离/附加方法,

    深入浅析SQL封装、多态与重载 面向对象1.类:众多对象抽象出来的2.对象:类实例化出来的3.类的定义关键字class4.类里面包含成员变量成员属性成员方法5.面向对象三大特性(1)封装

    在Sql Server中调用外部EXE执行程序引发的问题 一、先开启xp_cmdshell打开外围应用配置器—功能的外围应用配置器—实例名DatabaseEnginexp_cmdshell—启用二、解决方法usemasterExecxp_cmdshell'mkdird:csj" class="img-responsive" alt="详解DB2 sqlstate 57016 SQLCODE=-668 原因码 "7"错误的快速解决办法(详解增发万亿国债细节)">

    详解DB2 sqlstate 57016 SQLCODE=-668 原因码 "7"错误的快速解决办法(详解增发万亿国债细节)

  • win7系统更新累计补丁KB3126446后反复重启该怎办?(win7 更新)

    win7系统更新累计补丁KB3126446后反复重启该怎办?(win7 更新)

  • win7系统使用耳麦进行对话聊天有噪音该如何解决(win7怎么用耳机听歌)

    win7系统使用耳麦进行对话聊天有噪音该如何解决(win7怎么用耳机听歌)

  • UltraISO+U盘+win8重装系统教程(ultra系统优盘恢复)

    UltraISO+U盘+win8重装系统教程(ultra系统优盘恢复)

  • opera.exe - opera进程是什么文件 有什么用(opera installer)

    opera.exe - opera进程是什么文件 有什么用(opera installer)

  • 计算机/网络设备状态监测脚本 批处理(计算机网络设计)

    计算机/网络设备状态监测脚本 批处理(计算机网络设计)

  • JavaScript获取function所有参数名的方法(JavaScript获取网页内容)

    JavaScript获取function所有参数名的方法(JavaScript获取网页内容)

  • Bootstrap实现默认导航栏效果(bootstrap怎么用)

    Bootstrap实现默认导航栏效果(bootstrap怎么用)

  • 公司注销涉及哪些税务部门
  • 小规模纳税人可以收专票吗
  • 资产负债表的其他流动资产包括哪些
  • 固定资产折旧直接计入成本
  • 应交税费是没有增值税吗
  • 公司租用私人汽车违法吗
  • 生产成本月末转到哪里
  • 企业筹建期间开办费计入什么科目
  • 纳税人选择简易办法一经选择
  • 企业网银电子商务收入是什么
  • 原材料没发票能结转成本吗?
  • 外出经营活动税收管理证明和跨区域涉税事项报告表
  • 房租发票9%还是5%
  • 技术服务发票税率 5% 小规模
  • 工会发票的纳税识别号
  • 法人变更了还用变更发票领用本吗
  • 月末印花税会计分录
  • 如何返还股东的出资款
  • 网络直播应如何缴纳增值税?
  • 普票需要缴纳印花税吗
  • 全年累计应税所得额
  • 外聘人才一次性工资费用入账什么分录?
  • 开机提示lsass应用程序出错
  • 2020年计提印花税怎么做账
  • 开票税点算什么费用
  • 公司之间可以借款吗怎么做账
  • 工程竣工结算和决算的区别
  • newacs.exe是什么进程
  • 免征的增值税账务处理
  • php socket_select
  • 结转未交增值税为什么是零
  • php安装及使用教程
  • antd form table
  • Cookie和Session的区别,各自的使用方法及常用操作
  • linux如何使用
  • vi命令模式下的常用命令有哪些?
  • 累计折旧大白话
  • 售后租回怎么理解
  • 运营费的税率
  • 什么时间可以开发票
  • python清除变量的命令
  • 怎么用java写代码
  • 亏损企业研发费用可以加计么
  • 六税一费和六税两费的区别
  • 为什么应交增值税要转入未交增值税
  • 建筑公司内账收什么费用
  • 个人名字的发票可以报销吗
  • 一次性开票分期收入账务处理
  • 投资收益记账
  • 餐厅吃饭不小心把餐具打破需要赔吗?
  • 银行定期存款取一部分怎么算利息
  • 出口免抵退和免退有什么区别
  • 资产负债表里包括应付利息吗
  • 年末净利润为负说明什么
  • 出纳账户怎么设置
  • sqlserver数据库恢复挂起状态
  • 配置是什么意思
  • 服务器系统2003
  • centos安装插件
  • win8右侧栏设置
  • mstore.exe - mstore是什么进程 有什么用
  • wind10升级
  • win10 ie8浏览器
  • 笔记本win7电源已接通未充电怎么办
  • linux dhcpv6
  • win7安装内存4g
  • VS2013 OpenGL MFC 编程问题
  • jq拖拽div替换位置
  • (cocs2dx)二、 利用Eclipse编译apk应用
  • javascript运算
  • bat批处理执行cmd命令
  • node.js开发实战详解
  • 异步任务管理器
  • js验证正则表达式
  • js跨域访问页面控件
  • jquery的gt
  • 电子税务局获取验证码异常
  • 房产证加名字需要哪些手续和费用
  • 滴灌带设备一套多少钱
  • 江西省国家税务局工作人员名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设