Пример #1
0
    //此函数用于初始化
    private void Start()
    {
        tempParent = GameObject.Find("Canvas").transform;

        string theLastSpriteName = null;

        //资源加载
        this.sprites  = Resources.LoadAll <Sprite>(this.spritePath);
        this.bgLayout = bgTransform.GetComponent <GridLayoutGroup>();

        List <Sprite> tempSprites = new List <Sprite>();

        //记录正确的精灵名字顺序
        for (int i = 0; i < this.sprites.Length; i++)
        {
            tempSprites.Add(this.sprites[i]);
            this.correctSpritesNameOrder += this.sprites[i].name;
            //记录下最后一张碎片的名字
            if (i == this.sprites.Length - 1)
            {
                theLastSpriteName = this.sprites[i].name;
            }
        }

        print("正确的图片名字构成顺序:" + this.correctSpritesNameOrder.ToString());

        int spritesLength = this.sprites.Length;

        //Debug.Log(spritesLength);
        for (int i = spritesLength - 1; i >= 0; i--)
        {
            //实例化预制体
            GameObject btnInstance = Instantiate(this.puzzlePrefab) as GameObject;
            gameOBJs.Add(btnInstance);
            //获取按钮组件
            Button btn = btnInstance.GetComponent <Button>();

            GameControl self = this;//要保存一下当前的this对象,以免出现this指向错误
            btn.onClick.AddListener(delegate() {
                self.BtnOnclick(btnInstance.GetComponent <RectTransform>());
            });

            //随机取图片出来放置,达到打乱的效果
            int randomNumber = Random.Range(0, tempSprites.Count);
            btnInstance.name = tempSprites[randomNumber].name;

            Image btnInstanceImage = btnInstance.GetComponent <Image>();
            if (btnInstance.name == theLastSpriteName)
            {
                //置空,否则打乱
                this.remainSprite       = tempSprites[randomNumber];
                btnInstanceImage.sprite = null;
                this.nullImage          = btnInstance.GetComponent <RectTransform>();
            }
            else
            {
                //btnInstance.GetComponent<Image>().sprite = tempSprites[randomNumber];
                btnInstanceImage.sprite = tempSprites[randomNumber];
            }

            //Debug.Log(btnInstanceImage);

            tempSprites.Remove(tempSprites[randomNumber]);
            btnInstance.transform.SetParent(bgTransform);
            btnInstance.GetComponent <RectTransform>().localScale = Vector3.one;
            //Debug.Log(randomNumber + ":" + btnInstance.name);
        }

        //this.buttons = this.transform.Find("BackGround").GetComponentsInChildren<Button>();

        ////随机放置一个空图片位置
        //int tempNumber = Random.Range(0, this.buttons.Length);
        //this.remainSprite = buttons[tempNumber].GetComponent<Image>().sprite;//保存被置空的图片
        //this.buttons[tempNumber].GetComponent<Image>().sprite = null;
        //this.nullImage = this.buttons[tempNumber].GetComponent<RectTransform>();

        //设置最右下角的图片为消失的图片
    }