Hash table(哈希表) 使用

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Hash : MonoBehaviour {


 List<Shader> redColoerList=new List<Shader>();
 Hashtable htMatColoer=new Hashtable();
 RaycastHit hit;
 bool isDraging=false;
 Transform tM;
 Ray myRay;
 Vector3 cha=new Vector3();
 bool chaV3=false;
 // Use this for initialization
 void Start () {
	
 }


 // Update is called once per frame
 void Update () {

  myRay = camera.ScreenPointToRay (Input.mousePosition);

  if(Input.GetMouseButton(0))
  {

   if(tM!=null)
   {
    chaV3=hit.point-tM.position;
    tM.position=new Vector3(hit.point.x,tM.position.y,hit.point.z)-chaV3;
   }


  }

  if (Physics.Raycast(myRay, out hit)) 
  {
    
   if(Input.GetMouseButtonDown(0))
   {
    tM=hit.transform;
    tM.collider.enabled=false;
    ReShaderListSetColor(tM);
    isDraging=true;
//	 chaV3=false;
   }
   if(Input.GetMouseButtonUp(0))
   {
    ColorBack(tM);
    isDraging=false;
   }
  }

 }

 void ReShaderListSetColor(Transform t)
 {
  if(t.renderer==null)
  {
   return;
  }
  redColoerList.Clear();
  htMatColoer.Clear();


  for(int i=0;i<t.renderer.materials.Length;i++)
  {
   redColoerList.Add(t.renderer.materials[i].shader);
   htMatColoer.Add(t.renderer.materials[i],t.renderer.materials[i].color);
   t.renderer.materials[i].shader=Shader.Find("Transparent/Diffuse");
   t.renderer.materials[i].color=new Color(1,0,0,0.5f);
  } 

 }
 void ColorBack(Transform t)
 {
  if(t.renderer==null)
  {
   return;
  }
  for(int i=0;i<t.renderer.materials.Length;i++)
  {
   t.renderer.materials[i].shader=redColoerList[i];
   t.renderer.materials[i].color=(Color)htMatColoer[t.renderer.materials[i]];
  }
  t.collider.enabled = true;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值