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;
}
}
Hash table(哈希表) 使用
最新推荐文章于 2020-12-06 01:03:17 发布