//此函数用于初始化 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>(); //设置最右下角的图片为消失的图片 }