先上代码:import System.IO;@MenuItem ("Assets/Save Font Texture")static function SaveFontTexture () {
var tex = Selection.activeObject as Texture2D;
if (tex == null) {
EditorUtility.DisplayDialog("No texture selected", "lease select a texture", "Cancel");
return;
}
if (tex.format != TextureFormat.Alpha8) {
EditorUtility.DisplayDialog("Wrong format", "Texture must be in uncompressed Alpha8 format", "Cancel");
return;
} // Convert Alpha8 texture to ARGB32 texture so it can be saved as a PNG
var texPixels = tex.GetPixels();
var tex2 = new Texture2D(tex.width, tex.height, TextureFormat.ARGB32, false);
tex2.SetPixels(texPixels);
// Save texture
var texBytes = tex2.EncodeToPNG();
var fileName = EditorUtility.SaveFilePanel("Save font texture", "", "font Texture", "png");
if (fileName.Length > 0) {
var f : FileStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
var b : BinaryWriter = new BinaryWriter(f);
for (var i = 0; i < texBytes.Length; i++) b.Write(texBytes);
b.Close();
}
DestroyImmediate(tex2);
}
这个脚本是用在UNITY3D中的,作用是通过TTF字库生成一个.png格式的texture,问题来了,这段代码是把TTF字库中所有字符生成到一个PNG图片中,这样导致图片过大,各位大侠看能不能帮忙优化一下,只生成需要的文字的图片。
var tex = Selection.activeObject as Texture2D;
if (tex == null) {
EditorUtility.DisplayDialog("No texture selected", "lease select a texture", "Cancel");
return;
}
if (tex.format != TextureFormat.Alpha8) {
EditorUtility.DisplayDialog("Wrong format", "Texture must be in uncompressed Alpha8 format", "Cancel");
return;
} // Convert Alpha8 texture to ARGB32 texture so it can be saved as a PNG
var texPixels = tex.GetPixels();
var tex2 = new Texture2D(tex.width, tex.height, TextureFormat.ARGB32, false);
tex2.SetPixels(texPixels);
// Save texture
var texBytes = tex2.EncodeToPNG();
var fileName = EditorUtility.SaveFilePanel("Save font texture", "", "font Texture", "png");
if (fileName.Length > 0) {
var f : FileStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
var b : BinaryWriter = new BinaryWriter(f);
for (var i = 0; i < texBytes.Length; i++) b.Write(texBytes);
b.Close();
}
DestroyImmediate(tex2);
}
这个脚本是用在UNITY3D中的,作用是通过TTF字库生成一个.png格式的texture,问题来了,这段代码是把TTF字库中所有字符生成到一个PNG图片中,这样导致图片过大,各位大侠看能不能帮忙优化一下,只生成需要的文字的图片。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货