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); } }