unity 物体颜色从一端逐渐变到另一端
来源:互联网 发布:深圳阿里云大厦物业 编辑:程序博客网 时间:2024/06/05 05:24
这个功能主要来自项目中模拟建筑工人每天施工进度情况,一个大构件工人不可能一天完成,这个构件工人完成多少要求该构件变色百分比就为多少
直接看效果:
变色的走向我们可以通过程序控制
就是和shader简单交互就行,我这里是个简单的demo 大体思路没毛病 还是简单粗暴看代码吧
unity的shader(封装的都不知道啥玩意)真的石乐志,一点不奔放,由于版本这块 查api差点放弃,有点openGl就看的懂,shader很简单
Shader:
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/dfs" {Properties{_Color("Color", Color) = (1,1,1,1)_Color1("Color1", Color) = (1,0,0,0)_MainTex("Albedo (RGB)", 2D) = "white" {}_Glossiness("Smoothness", Range(0,1)) = 0.5_Metallic("Metallic", Range(0,1)) = 0.0_Clip("Clip", float) = 0.5//-0.5f(全变色)-->0.5f(全不变色)[KeywordEnum(None, Left, Up, Forward)]_Mode("Mode", Float) = 0//左到右,上到下,前到后}SubShader{Tags{ "RenderType" = "Opaque" }LOD 200CGPROGRAM// 基于物理的标准照明模型,并允许所有光线类型的阴影#pragma surface surf Standard fullforwardshadows vertex:vert// 使用着色器模型3.0目标,以获得更好的照明#pragma target 3.0sampler2D _MainTex;struct Input {float2 uv_MainTex;float4 localPos;};half _Glossiness;half _Metallic;fixed4 _Color;float _Clip;float _Mode;float4 _Color1;void vert(inout appdata_full i, out Input o){UNITY_INITIALIZE_OUTPUT(Input, o);o.localPos = i.vertex;}void surf(Input i, inout SurfaceOutputStandard o) {/*if (i.localPos.x >= _Clip && _Mode == 1 || i.localPos.y >= _Clip && _Mode == 2 || i.localPos.z >= _Clip && _Mode == 3){clip(-1);}*///老铁啊Albedo是一种颜色纹理哟fixed4 c = tex2D(_MainTex, i.uv_MainTex) * _Color;if (i.localPos.x >= _Clip && _Mode == 1 || i.localPos.y >= _Clip && _Mode == 2 || i.localPos.z >= _Clip && _Mode == 3){//clip(-1);o.Albedo = _Color1;}else{o.Albedo = c.rgb;}// 金属感和平滑度滑动条条o.Metallic = _Metallic;o.Smoothness = _Glossiness;o.Alpha = c.a;}ENDCG}FallBack "Diffuse"}
核心脚本:
using System.Collections;using System.Collections.Generic;using UnityEngine;public class getshader : MonoBehaviour { private MeshRenderer mat; private Vector4 v41; private float v=0;//颜色值这里随便默认,主要看shader里的 public Vector4 Scolor = new Vector4(0.0f, 1.0f, 0.0f, 1.0f);Material material; void Awake() { //动态赋予材质,懒得创建材质球 material = new Material (Shader.Find("Custom/dfs"));//material.color = Color.yellow;GetComponent<Renderer>().material = material; }void Start(){v = material.GetFloat ("_Clip");//1 left到right 2 up到down 3 forward到backmaterial.SetFloat ("_Mode",3.0f);//颜色变化方向} void Update() {//这里播放就放update里吧,懒得写接口获取数据播放变化效果 v = v - 0.001f;material.SetFloat ("_Clip",v);//颜色变化比例 print(v); }}
阅读全文
1 0
- unity 物体颜色从一端逐渐变到另一端
- Unity实现物体逐渐消失
- Unity实现物体逐渐消失(逐渐出现)
- unity 改变物体的颜色
- 创建一对bio,一端写入,另一端读出
- 一端自协商 另一端百兆全双工
- TCP 一端关闭,另一端调用send进程退出了
- Unity从UI拖物体到场景中以及鼠标拖动物体
- 从初学编程到逐渐开始明白
- unity 协程 实现物体颜色动态切换
- Unity调用sprite renderer更改物体颜色
- Unity中通过按键改变物体颜色
- Unity通过射线快速变化物体颜色
- jquery:点击之后变颜色,点击另一个,另一各变颜色,当前的恢复颜色
- UnityShader从入门到放弃(三)将法线的颜色填充给物体
- Unity 多物体混合动画、值变动画控制器
- Unity3d鼠标经过物体时变颜色,离开时恢复
- 鼠标勾选框,框内的物体变颜色
- java文件读写操作大全
- maven常用的命令
- android圆形图片工具类
- 映像租赁系统---SQL语言
- c函数指针详解
- unity 物体颜色从一端逐渐变到另一端
- 数组和字符串方法中返回问题
- Android之检测GPS服务和定位权限是否开启
- 速达荣耀G5000PRO V3.92工业、商业版
- 使用 Apache HTTP Server 必须知道基础知识
- Emotiv set and pair
- 微信网页授权获取code值回调两次的问题
- java线程安全之Concurrent.util常用类(十六)
- JSP中xmlhttp.responseText 返回的是Html代码