对象transform.localScale没有改变

时间:2013-05-16 11:00:40

标签: c# unity3d

我在游戏中添加了一些对象,但出于同样的原因,我从通用列表中添加的第一个对象在localScale中没有变化。

从下图中可以看出,控制台显示localScale是正确的,但是当您查看游戏视图和检查器时,该对象具有Vector.zero localScale。奇怪的是,对象的所有其他属性都是正确的(即object.name正确名称为3,7)。

第一个之后的对象也都正确显示。

更新:如果我不使用Queue<GameObject> tile = new Queue<GameObject>(),事情就会正常进行..

enter image description here

这是脚本:

public void animateGrid(List<int[]> matchTile, List<int[]> moveTile, List<int[]> appendTile){
        animating = true;

        Queue<GameObject> tile = new Queue<GameObject>();

        Debug.Log ("MatchTile count: " + matchTile.Count);
        Debug.Log ("AddTile count: " + appendTile.Count);

        foreach(int[] i in matchTile){
            tile.Enqueue(getGameObject(i[0], i[1]));
            match (tile.Peek());
        }

        Debug.Log ("tile: " + tile.Count);

        foreach(int[] j in appendTile){
            int x1 = j[0], y1 = j[1], 
                x2 = j[2], y2 = j[3];

            GameObject gameObj = tile.Dequeue();

            Debug.Log ("tileNo");

            append (    gameObj, 
                        getCoordinateFromGrid(x2, y2), 
                        x2, y2, 
                        grid.filled[x1, y1]
            );
        }
    ...
}

private void match(GameObject tile){
    Hashtable optional = new Hashtable();
    optional.Add("ease", LeanTweenType.easeInBounce);

    LeanTween.scale(tile, Vector3.zero, 0.05f, optional);   
    tile.SetActive(false);
}

private void append(GameObject tile, Vector3 position, int x, int y, int type){
    float tileSize = 1f / 9f;

    tile.renderer.material.color    =   getColor(type);
    tile.tag                        =   getType(type);
    tile.name                       =   x + "," + y;
    tile.transform.parent           =   transform.FindChild("Filled").transform;
    tile.transform.position         =   position;
    tile.transform.localScale       =   new Vector3(tileSize, tileSize, 70f);
    tile.SetActive(true);

    Debug.Log ("added scale: " + tile.transform.localScale + " x:" + x + " y:" + y);
}

1 个答案:

答案 0 :(得分:0)

如果我不使用Queue tile = new Queue(),则一切正常。我认为这是一个错误。