如何在一个阵列Unity3d中存储游戏对象

Koh*_*aku 1 c# unity-game-engine

如何将游戏对象/图像存储在一个数组中,这样我就可以使用"for循环"来改变图像的颜色,而不是单独改变它的颜色..我在unity3d中使用c#..

我的代码:

public Image clay, sand, loam, silt, siltyClay, siltyLoam, loamySand,   sandyLoam, siltyClayLoam;

public void imageColor(){
        sand.color = Color.green;
        clay.color = Color.white;
        loam.color = Color.white;
        silt.color = Color.white;
        siltyClay.color = Color.white;
        siltyLoam.color = Color.white;
        loamySand.color = Color.white;
        sandyLoam.color = Color.white;
        siltyClayLoam.color = Color.white;
        mountTex = (Texture)Resources.Load("sand", typeof(Texture));
}
Run Code Online (Sandbox Code Playgroud)

Fat*_*tie 5

有趣的是,最好的方法就是你已经拥有它.

你只有一件事没有得到:

当你想"突出一件事"时,编程模式将它们全部关闭,然后只打开一个.

这是一个基本的编程技巧:

public Image clay, sand, loam, silt, siltyClay,
   siltyLoam, loamySand, sandyLoam, siltyClayLoam;

private void AllOff()
    {
    sand.color = Color.white;
    clay.color = Color.white;
    loam.color = Color.white;
    silt.color = Color.white;
    siltyClay.color = Color.white;
    siltyLoam.color = Color.white;
    loamySand.color = Color.white;
    sandyLoam.color = Color.white;
    siltyClayLoam.color = Color.white;
    }

public Highlight( Image x )
    {
    AllOff();
    x.color = Color.green;
    }
Run Code Online (Sandbox Code Playgroud)

使用..

Highlight( silt );
Run Code Online (Sandbox Code Playgroud)

有问题的九个项目实际上不是一个列表 - 所以不要那样使用它们.

请注意,在其他情况下,您应该这样做:

  public Image[] images;
Run Code Online (Sandbox Code Playgroud)

试试看,在Inspector中你可以直接拖动它们.

要一次性处理它们,它就是这样

foreach (Image i in images)
  Debug.Log(i);
Run Code Online (Sandbox Code Playgroud)