Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用多个游戏对象_C#_Unity3d_Unity3d Gui - Fatal编程技术网

C# 使用多个游戏对象

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

我需要在特定的按钮上隐藏和显示特定的游戏对象

按钮-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].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