c#脚本控制shader

如图所示,c#脚本控制shader颜色。

1 public class ControlColor : MonoBehaviour
2 {
3     public Color color = new Color(1, 1, 1, 1);
4     public Material mat;
5     public void ChangeColor()
6     {
7         mat.SetVector("_Diffuse", color);
8     }
9 }
 1 [CustomEditor(typeof(ControlColor))]
 2 public class Edit_ControlColor : Editor {
 3     ControlColor scr;//脚本本体
 4     SerializedObject serObj;
 5     SerializedProperty color;
 6     SerializedProperty mat;
 7
 8     public void OnEnable()
 9     {
10         scr = (ControlColor)target;
11         serObj = new SerializedObject(target);
12         color = serObj.FindProperty("color");
13         mat = serObj.FindProperty("mat");
14     }
15     public override void OnInspectorGUI()
16     {
17         serObj.Update();
18         EditorGUILayout.PropertyField(color,new GUIContent("Color"));
19         EditorGUILayout.PropertyField(mat,new GUIContent("Mat"));
20         serObj.ApplyModifiedProperties();
21         scr.ChangeColor();
22     }
23 }
 1 // Upgrade NOTE: replaced ‘mul(UNITY_MATRIX_MVP,*)‘ with ‘UnityObjectToClipPos(*)‘
 2
 3 Shader "Custom/Color"
 4 {
 5     Properties
 6     {
 7          _Diffuse("Diffuse",Color)=(1,1,1,1)
 8     }
 9     SubShader
10     {
11         Tags { "RenderType"="Opaque" }
12         LOD 100
13
14         Pass
15         {
16             CGPROGRAM
17             #pragma vertex vert
18             #pragma fragment frag
19
20             #include "UnityCG.cginc"
21             float4 _Diffuse;
22
23             struct appdata
24             {
25                 float4 vertex : POSITION;
26                 float2 uv : TEXCOORD0;
27             };
28
29             struct v2f
30             {
31                 float4 pos : SV_POSITION;
32             };
33
34             v2f vert (appdata v)
35             {
36                 v2f o;
37                o.pos=UnityObjectToClipPos(v.vertex);
38                return o;
39             }
40
41             fixed4 frag (v2f i) : SV_Target
42             {
43                 return _Diffuse;
44             }
45             ENDCG
46         }
47     }
48 }
时间: 2024-08-01 12:55:13

c#脚本控制shader的相关文章

Unity3D教程宝典之光影烘焙:第四讲脚本控制

上一讲讲了用Light probes实现动态物体的非实时阴影,这一讲讲用代码实现代码实现动态物体的非实时阴影. 实现步骤:(1)新建一个场景,并建一个plane作为大地(2)创建Cube并缩放成扁平面后.复制Cube并旋转拼接搭建成一个敞篷.(3)讲上述物体设置static并烘焙.(4)创建一个player.这里用的unity自带的Character Controller包里的 3rd person controller这个prefab,拖进敞篷边.在该人物下找到Bip001 Pelvis这个节

【HTML5】用脚本控制交互元素details元素的使用

1.源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Con

Unity3D 学习教程 11 c#脚本控制摄像头

首先新建一个脚本 点击创建一个文件夹起名C# 点击文件夹 创建一个C#脚本 建好文件后 双击文件 启动脚本编辑器 void Start () 是场景运行时加载程序 void Update ()  是每调用一针执行一次  可以认为是试试执行的程序 下面编写第一个脚本 控制摄像机移动 using UnityEngine; using System.Collections; public class acc : MonoBehaviour { int speed=50; void Start () {

用脚本控制虚拟机

#############用脚本控制虚拟机 给file.sh 一个权限 chmod +x file.sh

AudioMixer的脚本控制

AudioMixer是Unity5新特性之一,能很好的实现立体声效果. 这儿先记录一下脚本控制的方法: 1.添加一个Group,然后点击它 2.右侧面板上出现2个参数:pitch(速度)和volume(大小) 3.右键Pitch,点击Expose to script 4.回到AudioMixer窗口,点击其右上角的Exposed Parameters,下拉有一个参数,双击修改为X 5.编写脚本: Using UnityEngine.Audio; public AudioMixer mixer;

脚本控制animation的事件

由于动作设计经常修改动作,所以每次改完都要再添加一次animation的事件,所以就直接写了个脚本,当然以后可以做成表格,然后用脚本从表格中读取,然后生成对应的animation事件.在Assets/Editor目录中放置代码,参考代码如下: using UnityEngine; using System.Collections; using UnityEditor; public class AddEventsToAnimations : MonoBehaviour { [MenuItem("

Unity3D中的第三人称镜头的脚本控制

原地址:http://blog.csdn.net/mobanchengshuang/article/details/27591271 好久没有敲Blog了,谢谢大家的留言.关注.私信等支持,但是我好像已经没有办法让自己继续写以前的博客系列了,因为我发现网上关于unity3D的内容太少了,所以我无法自拔地想写U3D相关的文章!!! 第三人称视角 第三人称视角是什么?很简单,CS就是一种第一人称视角游戏,玩家没有办法看到自己的角色形象,只能观察除开自己之外的游戏内容.第三人称视角那么就明显是能够看到

Maya 脚本控制物体自转

在Maya中,我们可以用脚本来控制物体的自转方向,速度等等,步骤如下: 选择需要操作的物体object,打开通道盒Channel Box,点击编辑Edit,打开表达式Expressions面板 选择需要转动轴rotateX, rotateY, 或者rotateZ 然后在下面输入: object.rotateX = time * -64; 上面的代码表示物体每秒绕x轴逆时针旋转64度.延伸阅读请参见Maya表达式制作时钟转动效果.

Unity3D之Mecanim动画系统学习笔记(六):使用脚本控制动画

控制人物动画播放 这里我重新弄了一个简单的场景和新的Animator Controller来作为示例. 下面先看看Animator Controller的配置: 人物在站立状态只能进入走路,走路只能进入奔跑或返回站立,奔跑只能进入跳跃或返回走路,跳跃则只能返回奔跑. 参数方面为两个参数: Float类型的moveSpeed: Trigger类型的Jump: 连线直接的转换条件为:moveSpeed大于0.1进入走路,走路moveSpeed大于0.9进入奔跑小于0.1返回站立,奔跑moveSpee