0

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

  1. 将每个纹理分配给单独生成的游戏对象的图像组件。
  2. 用这些游戏对象填充网格布局。

任何人都可以分享一些代码见解或可能会起作用的片段吗?

4

1 回答 1

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 元素上有一些不同。

于 2015-07-09T05:07:48.253 回答