定位数组内容(精灵)

时间:2019-06-25 11:28:54

标签: arrays unity3d positioning gameobject

我上面有带有数字的图片(我是说精灵)。 我将它们放在一个空的GameObject上,我的意思是[SerializeField],并通过脚本(C#Ofcourse)添加了,所以这些对象并不是真正存在于游戏开始时正在生成的对象。 因此,如您在代码中所见,我可以设置行和列的数量,并且在偏移量的情况下还可以在X和Y轴上设置距离。但我无法重新定位。似乎第一个生成的对象被锁定在项目的中间(第一个向上左),因此我尝试移动空游戏对象的Gizmo,但即使使用了Inspector,精灵仍然在原地。似乎需要将其放置在脚本中,但是如何?

请给我足够的例子女巫将与Unity合作?

我试图将其放置在Unity中,就像我在移动Gameobject的Gizmo以及在Inspector中提到的那样。确实似乎只能在脚本上完成(我可能错了,但我尝试了所有方法)

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);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

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

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

var position = transform.position + new Vector3(offsetY * j, offsetX * i * -1, -0.1f);
Instantiate(cardBack[i], position, Quaternion.Identity, transform);

为了将它们实例化为此Controll脚本的GameObject的子对象。

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