我创建了以下代码来查看我点击哪个游戏对象,但我找不到如何更改对象的材质,我只点击,它改变了所有具有脚本的对象的材质
//Public
public int TileGroup = 0; //Indicates the Tile Group Number.
//Private
public Rigidbody myRigidbody;
public Renderer myRenderer;
public Material tileDefaultMaterial;
public Material tileSelectedMaterial;
public Material tileSameGroupMaterial;
void Start () {
myRigidbody = GetComponent<Rigidbody> ();
myRenderer = GetComponent<Renderer> ();
tileDefaultMaterial = Resources.Load ("TileDefault", typeof(Material)) as Material;
tileSelectedMaterial = Resources.Load ("TileSelected", typeof(Material)) as Material;
tileSameGroupMaterial = Resources.Load ("TileSameGroup", typeof(Material)) as Material;
}
void Update () {
if (Input.GetMouseButtonDown (0)) {
TileClick ();
}
}
void TileClick (){
RaycastHit hitInfo = new RaycastHit ();
bool hit = Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hitInfo);
if (hit) {
Debug.Log ("Hit: " + hitInfo.transform.gameObject.name);
}
if (hitInfo.transform.gameObject.tag == "Tile") {
Debug.Log ("Hit a Tile!");
myRenderer.material = tileSelectedMaterial;
} else {
Debug.Log ("Hit Empty Space!");
}
}
当你在跑步
void Update()
{
if(Input.GetMouseButtonDown(0))
{
TileClick();
}
}
无论何时单击(无论在何处),Input.GetMouseButton(0)
将在所有脚本实例中为真。所以你最终改变了所有物体的颜色。相反,您可以尝试OnMouseDown()
方法。
void OnMouseDown()
{
TileClick();
}