【发布时间】:2019-02-21 00:32:02
【问题描述】:
我在场景中有多个游戏对象,上面有不同的材质。当我选择一个游戏对象时,它的材质必须更改为 selectMat。我的代码在编辑器中工作,在我的三星 s8 上也可以工作,但在多次选择不同的游戏对象后,selectedMat 材质仍保留在游戏对象上,并且不会变回原来的Mat。
我真的可以在这方面寻求帮助。
{
public GameObject SelectedObject;
public Material SelectMat;
public string Path = "StringPath";
private Material originalMat;
// Start is called before the first frame update
void Start()
{
originalMat = Resources.Load<Material>(Path);
}
public void Update()
{
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
GameObject hitObject = hit.transform.gameObject;
hitObject.GetComponent<Renderer>().material = originalMat;
SelectObject(hitObject);
hitObject.GetComponent<Renderer>().material = SelectMat;
}
else
{
ClearSelection();
}
}
}
void SelectObject(GameObject obj)
{
if (SelectedObject != null)
{
if (obj == SelectedObject)
{
return;
}
SelectedObject = obj;
}
}
void ClearSelection()
{
if (SelectedObject == null)
{
return;
}
else
{
SelectedObject.GetComponent<Renderer>().sharedMaterial = originalMat;
SelectedObject = null;
}
}
【问题讨论】:
-
您在清除选择时使用了
sharedMaterial。但是,当您选择它时,您使用了material,这很可能是导致问题的原因。