【发布时间】:2016-12-02 15:16:50
【问题描述】:
我正在使用 OverlapSphere 来检测对象特定半径内的所有碰撞器。然后我过滤掉一些我不关心的。对于剩下的几个,我尝试向这些对象发送消息以更新它们的渲染颜色。每当它发送消息时,统一就会冻结。我试图做一些研究,我能找到的最好的事情是无限循环可以冻结它。但我看不出有这种潜力。代码如下:
要发送消息的对象:
void sendmyMessage(bool status)
{
Collider[] tiles = Physics.OverlapSphere(gameObject.transform.position, 10);
int i = 0;
while (i < tiles.Length)
{
if(tiles[i].tag == "Tile")
{
//turn light on
if (status == true)
{
tiles[i].SendMessage("Highlight", true);
i++;
}
//turn light off
if (status == false)
{
tiles[i].SendMessage("Highlight", false);
i++;
}
}
}
}
对象接收消息:
void Highlight(bool status)
{
//turn light on
if(status == true)
{
gameObject.GetComponent<Renderer>().material.color = new Color(0, 0, 0);
}
//turn light off
if(status == false)
{
gameObject.GetComponent<Renderer>().material.color = new Color(1, 1, 1);
}
}
非常感谢任何帮助!
【问题讨论】:
-
你在哪里/如何打电话给
sendmyMessage?
标签: c# unity3d sendmessage