C# 使用多个游戏对象
我需要在特定的按钮上隐藏和显示特定的游戏对象 按钮-1:-C# 使用多个游戏对象,c#,unity3d,unity3d-gui,C#,Unity3d,Unity3d Gui,我需要在特定的按钮上隐藏和显示特定的游戏对象 按钮-1:- gameobject[0].SetActive(false); gameobject[1].SetActive(false); gameobject[2].SetActive(false); gameobject[3].SetActive(true); gameobject[4].SetActive(false); gameobject[5].SetActive(false); gameobject[6].S
gameobject[0].SetActive(false);
gameobject[1].SetActive(false);
gameobject[2].SetActive(false);
gameobject[3].SetActive(true);
gameobject[4].SetActive(false);
gameobject[5].SetActive(false);
gameobject[6].SetActive(false);
gameobject[7].SetActive(true);
gameobject[8].SetActive(true);
按钮2:-
gameobject[0].SetActive(true);
gameobject[1].SetActive(false);
gameobject[2].SetActive(false);
gameobject[3].SetActive(false);
gameobject[4].SetActive(false);
gameobject[5].SetActive(false);
gameobject[6].SetActive(false);
gameobject[7].SetActive(true);
gameobject[8].SetActive(false);
像这些,我有大约10个按钮。看起来代码太长了,效率也不高。有没有办法优化这个
谢谢。一般回答:将您的登录信息提取到方法中。我想到一个例子: 您可以传递所有对象,只显式地启用需要的对象,禁用其余的对象
您可以让一个方法接受对象列表、需要显示的对象数组,该方法将在对象之间循环,显示您需要的对象,隐藏其余的对象。一般回答:将您的登录信息提取到方法中。我想到一个例子: 您可以传递所有对象,只显式地启用需要的对象,禁用其余的对象
您可以让一个方法接受对象列表、需要显示的对象数组,该方法将在对象之间循环,显示您需要的对象,隐藏其余的对象。一般回答:将您的登录信息提取到方法中。我想到一个例子: 您可以传递所有对象,只显式地启用需要的对象,禁用其余的对象
您可以让一个方法接受对象列表、需要显示的对象数组,该方法将在对象之间循环,显示您需要的对象,隐藏其余的对象。一般回答:将您的登录信息提取到方法中。我想到一个例子: 您可以传递所有对象,只显式地启用需要的对象,禁用其余的对象 您可以让一个方法接受对象列表、需要显示的对象数组,该方法将循环遍历对象、显示所需对象、隐藏其余对象。您可以在按钮单击处理程序中将“要激活的索引”分配给数组,然后调用一个在游戏对象上循环的方法,并根据传递的参数是否包含它们的索引来设置它们的状态:
private void Button1_Click()
{
var toActivate = new[] { 3, 7, 8 };
ActivateGameObjects(toActivate);
}
private void Button2_Click()
{
var toActivate = new[] { 0, 7 };
ActivateGameObjects(toActivate);
}
private void ActivateGameObjects(int[] toActivate)
{
for (int i = 0; i < gameobjects.Length; i++)
{
gameobjects[i].SetActive(toActivate.Contains(i));
}
}
private void按钮1\u Click()
{
var-toActivate=new[]{3,7,8};
ActivateGameObjects(toActivate);
}
专用无效按钮2\u单击()
{
var toActivate=new[]{0,7};
ActivateGameObjects(toActivate);
}
私有void ActivateGameObjects(int[]到activate)
{
对于(inti=0;i
您可以将“要激活的索引”分配给按钮单击处理程序中的数组,然后调用在游戏对象上循环的方法,并根据传递的参数是否包含其索引设置其状态:
private void Button1_Click()
{
var toActivate = new[] { 3, 7, 8 };
ActivateGameObjects(toActivate);
}
private void Button2_Click()
{
var toActivate = new[] { 0, 7 };
ActivateGameObjects(toActivate);
}
private void ActivateGameObjects(int[] toActivate)
{
for (int i = 0; i < gameobjects.Length; i++)
{
gameobjects[i].SetActive(toActivate.Contains(i));
}
}
private void按钮1\u Click()
{
var-toActivate=new[]{3,7,8};
ActivateGameObjects(toActivate);
}
专用无效按钮2\u单击()
{
var toActivate=new[]{0,7};
ActivateGameObjects(toActivate);
}
私有void ActivateGameObjects(int[]到activate)
{
对于(inti=0;i
您可以将“要激活的索引”分配给按钮单击处理程序中的数组,然后调用在游戏对象上循环的方法,并根据传递的参数是否包含其索引设置其状态:
private void Button1_Click()
{
var toActivate = new[] { 3, 7, 8 };
ActivateGameObjects(toActivate);
}
private void Button2_Click()
{
var toActivate = new[] { 0, 7 };
ActivateGameObjects(toActivate);
}
private void ActivateGameObjects(int[] toActivate)
{
for (int i = 0; i < gameobjects.Length; i++)
{
gameobjects[i].SetActive(toActivate.Contains(i));
}
}
private void按钮1\u Click()
{
var-toActivate=new[]{3,7,8};
ActivateGameObjects(toActivate);
}
专用无效按钮2\u单击()
{
var toActivate=new[]{0,7};
ActivateGameObjects(toActivate);
}
私有void ActivateGameObjects(int[]到activate)
{
对于(inti=0;i
您可以将“要激活的索引”分配给按钮单击处理程序中的数组,然后调用在游戏对象上循环的方法,并根据传递的参数是否包含其索引设置其状态:
private void Button1_Click()
{
var toActivate = new[] { 3, 7, 8 };
ActivateGameObjects(toActivate);
}
private void Button2_Click()
{
var toActivate = new[] { 0, 7 };
ActivateGameObjects(toActivate);
}
private void ActivateGameObjects(int[] toActivate)
{
for (int i = 0; i < gameobjects.Length; i++)
{
gameobjects[i].SetActive(toActivate.Contains(i));
}
}
private void按钮1\u Click()
{
var-toActivate=new[]{3,7,8};
ActivateGameObjects(toActivate);
}
专用无效按钮2\u单击()
{
var toActivate=new[]{0,7};
ActivateGameObjects(toActivate);
}
私有void ActivateGameObjects(int[]到activate)
{
对于(inti=0;i
我还建议将您的“激活数组”存储在编辑器中可编辑的属性中,当您想使用游戏设置时,这通常是很好的,即[SerializeField]private int[]\u button1;[SerializeField]私有int[]_按钮2代码>我还建议您将“激活数组”存储在编辑器中可编辑的属性中,这通常适用于您想使用游戏设置的情况,即[SerializeField]private int[]\u button1;[SerializeField]私有int[]_按钮2代码>我还建议您将“激活数组”存储在编辑器中可编辑的属性中,这通常适用于您想使用游戏设置的情况,即[SerializeField]private int[]\u button1;[SerializeField]私有int[]_按钮2代码>我还建议您将“激活数组”存储在编辑器中可编辑的属性中,这通常适用于您想使用游戏设置的情况,即[SerializeField]private int[]\u button1;[SerializeField]私有int[]_按钮2代码>