Unity 通过代码简单实现文理的灰化显示
Posted 假于物つ点进客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 通过代码简单实现文理的灰化显示相关的知识,希望对你有一定的参考价值。
1.可以用于纹理的处理,也可用于模型显示的处理(比如某件准备或者服饰未获取的时候,灰化显示)
线上对比图:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TextureGrey : MonoBehaviour { [SerializeField] UITexture tex = null; Texture2D tex2D = null; Vector3 grey = new Vector3(0.299f, 0.587f, 0.114f); //灰化Shader中的灰度值,具体含义目前不是太清楚 void Start() { tex2D = tex.mainTexture as Texture2D; } void Update() { if (Input.GetKeyUp(KeyCode.A)) { //灰化 Vector3 tempV3 = Vector3.zero; if (null != tex2D) { Color[] cols = tex2D.GetPixels(); for (int i = 0, iMax = cols.Length; i < iMax; ++i) { tempV3.Set(cols[i].r, cols[i].g, cols[i].b); float dot = Vector3.Dot(tempV3, grey); cols[i] = new Color(dot, dot, dot, cols[i].a); } tex2D = new Texture2D(tex2D.width, tex2D.height, TextureFormat.ARGB32, false); tex2D.SetPixels(cols); tex2D.Apply(false); //实际上传改变后的像素数据到显卡上 tex.mainTexture = tex2D as Texture; } } } }
以上是关于Unity 通过代码简单实现文理的灰化显示的主要内容,如果未能解决你的问题,请参考以下文章
Unity报错:Read only asset Packages/com.xxxxx.xxx.xxxx/Editor/VSCodeDiscovery.cs.IPGSD has no meta(代码片段
Unity报错:Read only asset Packages/com.xxxxx.xxx.xxxx/Editor/VSCodeDiscovery.cs.IPGSD has no meta(代码片段