纳金网

标题: Unity3D做彩色的字体的详细教学 [打印本页]

作者: 会飞的鱼    时间: 2011-11-24 14:17
标题: Unity3D做彩色的字体的详细教学




           详细的实现方法:
         

           1 首先随便扔进去一个字体,最简单的比如扔进去一个arial。
         

           设置好Font Size,比如24
           

           Character里一般来说不需要Unicode,除非你要把中文做成花。我选ASCII default set。如果只要大写或者小写,自己选。
         

           2 建一个目录,取名叫Editor。然后创建一个Javascript,按回车(Mac)或者F2(Win)改名成SaveFontTexture,不用加.js。然后双击,贴进去下面代码:
         

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

           }
         

           保存,关掉编辑器。
         

           另外如果你用iPhone版,用这个脚本:
         

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

           }
         

           3 这个时候,Unity的Assests菜单里多了一个选项,Save Font Texture。在Project Panel里找到刚才拽进去的字体,比如Arial,找到里面的font Texture,选中,然后在菜单里点“Save Font Texture”,会打开一个保存对话框,把这个图保存到你的项目的Assests目录里的随便哪个地方。
         

           4 拿Photoshop打开刚才保存的这张图,如果你没改名应该就叫font Texture.png,你会看到一个字体材质图。这时候你就可以编辑这个图了。Photoshop不熟的人可能会发现这个图看不清,再它下面加个层填成黑色就容易编辑了。也可以在设置里面改透明背景网格的颜色。
         

           5 改完之后按cmd+s或者ctrl+s,直接保存。切回Unity。建立一个Shader,随便取个名,把下面的内容贴进去。
           

            Properties {
           

                 
           


            _
           
           MainTex ("Font Texture", 2D) = "white" {}
           

                 
           
            _
           
           Color ("Text Color", Color) = (1,1,1,1)
           

               }
           

            
           

               SubShader {
           

                  Lighting Off
           

                  cull off
           

                  ztest always
           

                  Zwrite off
           

                  Fog { Mode Off }
           

                  Tags {"Queue" = "Transparent" }
           

                  Pass {
           

                     Blend SrcAlpha OneMinusSrcAlpha
           

                     SetTexture [
           
            _
           
           MainTex] {
           

                        constantColor [
           
            _
           
           Color]
           

                        Combine texture * constant, texture * constant
           

                     }
           

                  }
           

               }
           

           }
         

           贴完保存。
         

           6 新建一个Material,随便取个名,比如我取名叫Font Mat。在Shader里选GUI->Textured Text Shader。这个shader是你刚才建的那个shader。 FontTexture选你改过的那个字体的图。Text Color不用管,白色就行。
         

           7 扔进去一个GUI Text (菜单的GameObject->Create Other->GUI Text,Font选你扔进去的字体,比如arial,Material选刚才建的材质,比如我的就是Font Mat。
         

           由 uke 发表
         

           本文转自:
           
            http://blog.sina.com.cn/s/blog
            
             _
            
            4c5fc6950100h268.html
           


作者: tc    时间: 2012-1-31 23:21
笑声,欢天喜地;幸运,铺天盖地;才情,经天纬地;财气,呼天唤地;豪气,遮天盖地;福气,惊天动地;春节,冰天雪地;快乐,翻天覆地!

作者: tc    时间: 2012-2-10 23:22
好`我顶``顶顶

作者: C.R.CAN    时间: 2012-3-1 23:24
读铁系缘分,顶铁系友情

作者: 晃晃    时间: 2012-5-16 23:23
我也来支持下

作者: 晃晃    时间: 2012-7-24 23:23
不会吧,太恐怖了

作者: C.R.CAN    时间: 2012-8-13 11:39
读铁系缘分,顶铁系友情

作者: C.R.CAN    时间: 2012-8-28 00:20
先顶上去,偶要高亮加精鸟!

作者: 奇    时间: 2012-8-29 23:54
有意思!学习了!

作者: C.R.CAN    时间: 2012-10-18 23:34
其实楼主所说的这些,俺支很少用!

作者: C.R.CAN    时间: 2012-11-2 23:25
好铁多多发,感激分享





欢迎光临 纳金网 (http://go.narkii.com/club/) Powered by Discuz! X2.5