unity中能用代码修改unity shader代码提示吗

21:49 提问
unity3d中 如何用js代码来更改shader中的3个子着色器
#pragma strict
var fadeSpeed : float=10;
var timeLeft:float=10;
var rotationSpeed:float = 100.0f;
function Start () {
function Update () {
transform.Rotate(Vector3(0,rotationSpeed*Time.deltaTime,0));
if (gameObject.renderer.material.color.a & 0)
timeLeft = timeLeft - Time.deltaT
alpha = (timeLeft/fadeSpeed);
gameObject.renderer.material.color.a=
gameObject.transform.position.y+=0.002;
利用上面的代码只能改变Material中Element 0,改变不了element2,element3关于Unity3D中的Shader的知识 - 翼狐网(原翼虎网)
当前位置:
关于Unity3D中的Shader的知识
关于Unity3D中的Shader的知识
(0/1540)
首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex&shader和pixel&shader还是使用标准的Cg/HLSL&编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,然后我们来看下Unity3D自带的60多个Shader。&这些Shader被分为五个大类,它们分别是:&⑴、Normal&Shader&Family,⑵、Transparent,⑶、Transparent&Cutout,⑷、Self-llluminated,⑸、Reflective。&的Shader该怎么写:&1、先了解下渲染管线及渲染的过程原理;2、然后了解下基本的HLSL概念和指令用法;3、接着看下unity&manual中shader一块的知识点,比如分的三种渲染模式各自是什么意思以及对应SHADER的用法,基本内置SHADER的代码结构及框架,大体上shader的结构;4、最后反复看示例里shader的应用,了解为什么是这个效果,对应的为什么是这几行shader代码,熟知这些就会构建起你对unity&shader的理解。&以上就是针对unity中的shader进行含义的翻译、shader的分类和shader该如何写做了详细的介绍,希望对大家有用。
资料下载推荐
您需要登录后才可以回复Unity(195)
Shader(10)
2D像素特效(9)
Shader,2D像素特效(6)
代码分析,UGUI(6)
UGUI(Unity Graphical User Interface 简称 UGUI,又称图形)如何创建材质球
NGUI(Next-generation GUI,下一代图形用户接口)
Assets--Create--Material如下图所示
点击创建好的材质球,选择(因为我之前把Gray,变灰的Shader放到这个Shader文件中,所有我选择这个SHADER)
--------------------------------------------------如果要创建自己的Shader,并倒入材质球,该怎么办--------------------------------------------
可以看到,创建了几个Shader放入了一个自定义文件夹中
他们的前缀都是 Custom
创建的都是Shader文件
在下图中,UGUI的Shader路径中包含了7个Shader文件
实际上,如果要自己创建自定义Shader文件,就需要在这样定义Shader文件
&Custom/Test&,前面的路径名字为Shader菜单的路径
自定义一个Shader文件,命名Example/Rim123
打开这个Shader文件,把路径改成和名字一样。如下图所示
再打开材质包,发现路径下面是有这样的Shader文件的
---------------------------------------------------------
用代码控制更换材质球
public void OnClick() { GetComponent&MeshRenderer&().material = myMaterial1;&
参考资料:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:22093次
积分:2108
积分:2108
排名:第15609名
原创:192篇
该博客所用图片资源均作学习分享用途,请勿用于商业行为。传播者自负。
如果本博客所写文章侵犯到您的权益,请主动联系留言,我们将及时删除相关内容。
请支持使用正版软件,,。
资料文本文件分享:
DragonBones用户手册:
Unity用户手册:
Unity Script API用户手册:
--------------------------------------------
-游戏开发者门户
--------------------------------------------
罗辑思维:
百家讲坛:
程序员代码编程直播平台:由一群欧美程序爱好者共同发起成立,旨在为全球程序员提供一个实时高效的互动平台。
--------------------------------------------
steamspy 查看各游戏销量(总销量、各阶段销量、各地区销量、游戏时间等等):
steamgraph 查看游戏在线人数统计图表:
steamDB 查看游戏相关信息(游戏价格走势图、游戏人数统计、当前打折游戏、游戏时间、游戏商店代码、游戏存档路径等和部分来自steamspy的数据):
IsThereAnyDeal查看steam游戏史低价格:
Steam Ladder查看玩家个人资料的各种数据统计,如玩家等级排名、游戏时间排名:
--------------------------------------------
从每个项目改动备份做起,每天早上开始工作前备份,每天晚上结束工作后备份,系统崩溃再也不用害怕了,复制工程文件,以及打包工程文件
(12)(43)(53)(83)(12)(1)1080人阅读
定义一个材料,放在Resources文件夹中
然后贴上Shader代码
Shader &Custom/ScriptControlShader& {
Properties {
_Color (&Color&, Color) = (1,1,1,1)
_MainTex (&Albedo (RGB)&, 2D) = &white& {}
SubShader {
Tags { &RenderType&=&Opaque& }
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard fullforwardshadows
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2D _MainT
struct Input {
float2 uv_MainT
void surf (Input IN, inout SurfaceOutputStandard o) {
// Albedo comes from a texture tinted by color
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _C
o.Albedo = c.
o.Alpha = c.a;
FallBack &Diffuse&
}定义了两个属性&_Color 、&_MainTex
现在在脚本里控制者两个属性
using UnityE
using System.C
public class Main : MonoBehaviour {
public Vector4
public float val_1;
public float val_2;
public Matrix4x4
void Start(){
//获取图Texture2D和Material
earth = (Texture2D)Resources.Load(&Earth&);
earthcloud = (Texture2D)Resources.Load(&EarthClouds&);
mat = (Material)Resources.Load(&02test&);
green = Color.
void Update () {
mat.SetTexture(&_MainTex&,earthcloud);
mat.SetColor(&_Color&,green);
}将脚本绑在一个GameObject上,就可以看到效果的改变了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2645次
排名:千里之外
(2)(1)(1)(6)(3)2595人阅读
unity3d(7)
获取方法如下:
gameObject.render.materials.GetFloat(&propName&);
gameObject.render.materials.SetFloat(&propName&, value);
gameObject.renderer.material.SetTexture(&_propName&, tex);
gameObject.renderer.material.GetTexture(&_propName&);
通过tex的替换,可以减少Shader渲染的性能消耗,而做出如天空盒,昼夜替换,云层和夜空更替的效果。
另,自己感觉Sky Shader中 云层1和2的 RGB 之和会比点乘 表现的更自然,更真实。
除外,天空盒Sky Shader中的LightModel可以自定义,并直接return s.Albedo值,即直接返回自定义的反射光,不需其他的影响。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47427次
排名:千里之外
原创:29篇
评论:10条
你们可以称呼我阿洒(外号),华南理工大学软件学院男屌丝一枚,非攻非受。
感兴趣的方向是 Game Development. 现在主要使用和学习的游戏引擎是 cocos2dx, cocos2d-js, Unity3D. 喜欢新鲜和有趣的技术,脑洞较大~
联系邮件:
(1)(7)(4)(7)(2)(2)(6)(1)}

我要回帖

更多关于 unity 代码控制shader 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信