NGUI 製作動態圖集

List<Texture2D> textures=new List<Texture2D>();
        List<UIAtlas.Sprite> sprits = new List<UIAtlas.Sprite> ();

        for (int i=batch*batchQuantity; i<batchQuantity*(batch+1); ++i) {

            if(i==itemGos.Count)
            {
                Logger.log("i = "+i+" itemGos = "+itemGos.Count);

                break;
            }

            UIFriendItem fi=itemGos[i].GetComponent<UIFriendItem>();
            string tempUrl=facebookGraphURL+"/"+fi.firendId+"/picture?access_token="+FacebookCenter.instance.GetAccessToken();
            if(WebTextureCache.InstantiateGlobal().ImageCache.ContainsKey(tempUrl))
            {
                if(WebTextureCache.InstantiateGlobal().ImageCache[tempUrl].width==50)
                {
                    textures.Add(WebTextureCache.InstantiateGlobal().ImageCache[tempUrl]);
                    UIAtlas.Sprite sp = new UIAtlas.Sprite ();
                    sp.name=fi.firendId;
                    sprits.Add(sp);
                }
            }

        }

        //
        if(textures.Count>0)
        {
            textures.Add((Texture2D)Resources.Load("Others/photoFrame"));
            UIAtlas.Sprite sp = new UIAtlas.Sprite ();
            sp.name="photoFrame";
            sprits.Add(sp);
            ///------------
            Texture2D atlas = new Texture2D(2048, 2048);
            Rect[] rects;
            rects = atlas.PackTextures ((Texture2D[])textures.ToArray (),0,2048);
            Logger.log("the length is + "+rects.Length);

            if (rects.Length != sprits.Count) {
                Logger.log("error!! length not match ");
                    }

            for(int i=0; i<rects.Length ; ++i)
            {
                rects[i]=NGUIMath.ConvertToPixels(rects[i], atlas.width, atlas.height, true);
                sprits[i].inner=rects[i];
                sprits[i].outer=rects[i];
                //Logger.log(rects[i]);
            }


            Material mat = new Material("atlasMat"+batch.ToString());
            mat.shader= Shader.Find("Unlit/Transparent Colored");
            if (mat.shader == null) {
                Logger.logError("shader is null");
                }
            mat.mainTexture=atlas;

            var gameobject = new GameObject ("atlasBatch"+batch.ToString());
            UIAtlas newAtlas=gameobject.AddComponent<UIAtlas> ();
            newAtlas.spriteList = sprits;
            newAtlas.spriteMaterial = mat;
            //newAtlas.coordinates = UIAtlas.Coordinates.TexCoords;

            Logger.log("successfully build atlas for batch " +batch.ToString());
            //Logger.log(newAtlas.spriteMaterial.ToString());


            createdAtlas.Add (batch, newAtlas);
            batchCompleted.Add (batch);
            batchProcessing.Remove (batch);
        }
        else{
            batchProcessing.Remove (batch);
            Logger.log("picture download failed " +batch.ToString());
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章