Esempio n. 1
0
 private void SetPackSprite(PackTextureAttrSet info)
 {
     if (info != null &&
         info.packSprite &&
         bindImage != null)
     {
         bindImage.sprite = info.packSprite;
     }
 }
 void CreatePackTextureAttrSetField(string label, ref PackTextureAttrSet outAttrSet)
 {
     EditorGUILayout.BeginHorizontal();
     outAttrSet = EditorGUILayout.ObjectField(label, outAttrSet, typeof(PackTextureAttrSet), true) as PackTextureAttrSet;
     EditorGUILayout.EndHorizontal();
 }
        private static void WriteResult(
            string folder,
            string fileName,
            TextureImporterFormat texImportFormat,
            ref PackTextureAttrSet packTextureAttrSet
            )
        {
            if (string.IsNullOrEmpty(folder) ||
                string.IsNullOrEmpty(fileName) ||
                packTextureAttrSet == null ||
                packTextureAttrSet.packTexture == null ||
                packTextureAttrSet.texVertexAttrList == null ||
                packTextureAttrSet.texVertexAttrList.Count == 0)
            {
                return;
            }


            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            //写纹理
            string texPath = string.Format("{0}/{1}.png", folder, fileName);

            //写纹理
            File.WriteAllBytes(texPath, packTextureAttrSet.packTexture.EncodeToPNG());
            AssetDatabase.ImportAsset(texPath, ImportAssetOptions.ForceSynchronousImport | ImportAssetOptions.ForceUpdate);

            //关联
            Texture2D tPackTexture = AssetDatabase.LoadAssetAtPath(texPath, typeof(Texture2D)) as Texture2D;

            if (tPackTexture != null)
            {
                //设置为Sprite
                TextureImporter         importer = SimplePacker.GetTextureImporter(tPackTexture);
                TextureImporterSettings settings = SimplePacker.GetTextureImporterSettings(tPackTexture);
                if (importer != null &&
                    settings != null)
                {
                    settings.ApplyTextureType(TextureImporterType.Advanced, false);
                    SimplePacker.SetTextureImporterSettings(tPackTexture, settings);

                    //要来回设置一下
                    settings.ApplyTextureType(TextureImporterType.Sprite, false);
                    settings.textureFormat = texImportFormat;
                    SimplePacker.SetTextureImporterSettings(tPackTexture, settings);
                }

                packTextureAttrSet.packTexture = tPackTexture;
                packTextureAttrSet.packSprite  = AssetDatabase.LoadAssetAtPath(texPath, typeof(Sprite)) as Sprite;
            }

            string attrSetPath = string.Format("{0}/{1}.asset", folder, fileName);
            //存在就更新,不能创建,会丢失引用
            PackTextureAttrSet tPacktextureAttrSet = AssetDatabase.LoadAssetAtPath(attrSetPath, typeof(PackTextureAttrSet)) as PackTextureAttrSet;

            if (tPacktextureAttrSet != null)
            {
                tPacktextureAttrSet.CopyForm(packTextureAttrSet);
                //修改引用为已经存在的Asset文件
                packTextureAttrSet = tPacktextureAttrSet;
            }
            else
            {
                AssetDatabase.CreateAsset(packTextureAttrSet, attrSetPath);
            }
        }