Unity的button脚本及MaterialPropertyBlock使用、C#数组转list

来源:互联网 发布:人工智能等级 编辑:程序博客网 时间:2024/06/13 06:10

http://blog.csdn.net/zuoyamin/article/details/17261361

MaterialPropertyBlock props;
private List myRenderer=new List();

props = new MaterialPropertyBlock();
Renderer[] rd =GameObject.FindObjectsOfType();
myRenderer =new List(rd);
props.SetFloat(“_ColliderForce”, 0);
foreach(Renderer render in myRenderer)
render.SetPropertyBlock(props);
上面的脚本会把他所在场景所有其他物体属性都修改
当然,也可以每个物体挂一个脚本一个shader,只控制该物体本身的。

props.SetFloat(“_ColliderForce”, 0);
foreach(Renderer render in myRenderer)
render.SetPropertyBlock(props);
同一个物体上挂两个材质球也是好使的,两个材质球的”_ColliderForce”这个属性都会被修改

using UnityEngine;
using System.Collections;

public class Button1 : MonoBehaviour
{

public Texture img;private Texture img0;private string info;//显示的信息/  private int frameTime;//记录按下的时间/  MaterialPropertyBlock props;private Renderer myRenderer;void Start(){    //初始化/      info = "请您点击按钮";    frameTime = 0;    props = new MaterialPropertyBlock();    myRenderer = GetComponent<Renderer>();}void OnGUI(){    //标签/      GUI.Label(new Rect(50, 10, 200, 20), info);    //普通按钮,点击后显示Hello World      if (GUI.Button(new Rect(150, 100, 200, 20), "lyg设为0"))    {        //info = "Hello World";        props.SetFloat("_ColliderForce", 0);        myRenderer.SetPropertyBlock(props);        info = "您点击了图片按钮,shewei0";        Debug.Log("设置为0");    }    //标签/      //GUI.Label(new Rect(280, 10, 200, 200), img0);    //图片按钮,点击后显示图片/      //if (GUI.Button(new Rect(280, 250, 200, 200), img))    //{    //    img0 = img;    //    props.SetFloat("_ColliderForce", 1);    //    myRenderer.SetPropertyBlock(props);    //    info = "您点击了图片按钮,shewei1";    //}    //标签/      //GUI.Label(new Rect(500, 10, 200, 20), "持续按下的时间:" + frameTime);    //连续按钮,点击后显示按下的时间/      if (GUI.Button(new Rect(380, 100, 200, 20), "lyg设为1"))    {        //frameTime++;        props.SetFloat("_ColliderForce", 1);        myRenderer.SetPropertyBlock(props);        //info = "您点击了图片按钮,shewei1";        info = "您按下了连续按钮,shewei0";        Debug.Log("设置为1");    }    //每当鼠标按下时将frameTime重置,一遍进行下次记录/      if (Input.GetMouseButtonDown(0))    {        frameTime = 0;    }}

}

原创粉丝点击