定位数组内容(精灵)

Positioning Array Content (Sprites)

我有带数字的图片(我的意思是 Sprites)。 我把它们放在一个空的游戏对象上,我的意思是 [SerializeField] 并通过脚本(C# Ofcourse)添加,所以对象并不真正存在,它们是在游戏开始时生成的。 因此,正如您在代码中看到的那样,我可以设置行和列的数量以及偏移量以及 X 和 Y 轴上的距离。但我不能重新定位它。似乎第一个生成的被锁定在项目的中间(第一个左上角)所以我试图移动空游戏对象的 gizmo 但即使我使用 Inspector 相反,精灵仍然在现场.好像需要在脚本中定位,但是怎么办?

请给我足够的示例 可以与 Unity 一起使用吗?

我尝试的是将它定位在 Unity 中,正如我已经提到的移动游戏对象的 Gizmo 以及在检查器中它真的似乎只能在脚本上完成(我可能是错的但我试过了一切)。

public class Controll : MonoBehaviour 
{
    public const int gridRows = 6;
    public const int gridCols = 6;
    public const float offsetX = 0.65f;
    public const float offsetY = 0.97f;

    [SerializeField] private GameObject[] cardBack;

    // Use this for initialization
    void Start ()
    {
        for (int i = 0; i < gridRows; i++)
        {
            for (int j = 0; j < gridCols; j++)
            {
                Instantiate(cardBack[i], new Vector3(offsetY*j, offsetX* i *-1 , -0.1f), Quaternion.identity);
            }
        }
    }

您正在将所有对象实例化到场景根级别。它们与最初负责实例化的 GameObject 没有任何关系。

如果您希望它们相对于生成的游戏对象定位,则使用

var position = transform.position + new Vector3(offsetY * j, offsetX * i * -1, -0.1f);
实例化(cardBack[i], position, Quaternion.Identity, <b>transform</b>);

为了将它们实例化为 GameObject 的子对象,此 Controll 脚本被附加到。

现在,如果您平移、旋转或缩放该父对象,所有实例化对象都会随之变换。