单击按钮时生成GameObjects并从纹理数组中设置其图像 - Unity 4.6(使用uGUI)

时间:2015-07-08 17:02:40

标签: c# arrays unity3d textures unity3d-gui

我在尝试开发一个加载器时遇到了很多麻烦,当点击一个按钮时,它会获取一系列纹理并将它们填充到网格布局中(当点击另一个按钮时,它会移除当前纹理并替换它们使用新的纹理数组)。我对UI的网格布局部分进行了完全排序,并生成了纹理数组,我只需要帮助:

  1. 将每个纹理指定给单独生成的GameObjects的Image组件。
  2. 使用这些GameObjects填充网格布局。
  3. 任何人都可以分享一些代码洞察或可能做到这一点的片段吗?

1 个答案:

答案 0 :(得分:1)

首先在Canvas内创建脚本,或使用脚本创建空GameObject

创建公共变量:

public Sprite[] mySprites;
public GameObject myGridLayoutGameObject;
public GameObject myGridElement;

mySprites中通过编辑器分配所有精灵。

myGridLayoutGameObject分配您的GUI GameObject GridLayoutGroup

对于myGridElement,您必须使用Image创建原型GUI对象并将其放在画布之外,以使其对您的相机不可见。将其分配给脚本变量。

然后你可以创建一些方法:

public void fillGrid() {
    foreach (Sprite sprite in mySprites) {
        GameObject instance = Instantiate(myGridElement, myGridElement.transform.position, myGridElement.transform.rotation) as GameObject;
        instance.GetComponent<Image>().sprite = sprite;
        instance.transform.SetParent(myGridLayoutGameObject.transform);
    }
}

它会自动将所有对象放在网格中,具体取决于您的设置。不要忘记在脚本的头部添加使用UnityEngine.UI;

另外,我已经为Unity 5编写了这段代码.Unity 4.6可能在GUI元素上有一些不同之处。