我有一行代码:
GameObject.Find("colorswitchred (" + id.ToString() + ")").transform.GetComponent<Main>().state
这一行在整个代码中被多次使用。我想知道是否有办法得到它所以我可以只有一个像s这样的变量来代表这行代码,所以每次我想说GameObject.Find(“colorswitchred(”+ id.ToString()+“) “)。transnsform.GetComponent()。state = 0,我可以把s = 0
答案 0 :(得分:5)
只需将其粘贴在一个有用名称的方法中:
public void SetColorSwitchRedState(int id, int newState)
{
GameObject.Find("colorswitchred (" + id.ToString() + ")").transform.GetComponent<Main>().state = newState;
}
然后你可以这样说:
SetColorSwitchRedState(42, 0);
答案 1 :(得分:2)
...我可以把s = 0
不,但你可以近距离接触
s(id, 0);
您可以通过声明代理来执行此操作:
Action<int, int> s = (id, newState) => GameObject.Find("colorswitchred (" + id.ToString() + ")").transform.GetComponent<Main>().state = newState;
委托是指向方法的指针,在这种情况下,它期望一个int(id
)和另一个int(你想要设置的值)。
应该说明s
不是一个非常有意义的名称,方法应该有有意义的名称。这个答案不是正确的方法,但它确实回答了你的问题。
答案 2 :(得分:0)
你可以使用一个属性。
public int S
{
get {return GameObject.Find("colorswitchred (" + id.ToString() + ")").transform.GetComponent<Main>().state;}
set
{
GameObject.Find("colorswitchred (" + id.ToString() + ")").transform.GetComponent<Main>().state = value;
}
}