12 第1页 | 共2 页下一页
返回列表 发新帖
查看: 5567|回复: 10
打印 上一主题 下一主题

Unity3D做彩色的字体的详细教学

[复制链接]

5552

主题

2

听众

8万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
11

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2011-11-24 14:17:00 |只看该作者 |倒序浏览




           详细的实现方法:
         

           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
           

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2012-1-31 23:21:53 |只看该作者
笑声,欢天喜地;幸运,铺天盖地;才情,经天纬地;财气,呼天唤地;豪气,遮天盖地;福气,惊天动地;春节,冰天雪地;快乐,翻天覆地!
回复

使用道具 举报

tc    

5089

主题

1

听众

33万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2012-2-10 23:22:02 |只看该作者
好`我顶``顶顶
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2012-3-1 23:24:16 |只看该作者
读铁系缘分,顶铁系友情
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

5#
发表于 2012-5-16 23:23:46 |只看该作者
我也来支持下
回复

使用道具 举报

1023

主题

3

听众

359

积分

设计实习生

Rank: 2

纳金币
335582
精华
0

最佳新人

6#
发表于 2012-7-24 23:23:13 |只看该作者
不会吧,太恐怖了
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

7#
发表于 2012-8-13 11:39:21 |只看该作者
读铁系缘分,顶铁系友情
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

8#
发表于 2012-8-28 00:20:00 |只看该作者
先顶上去,偶要高亮加精鸟!
回复

使用道具 举报

   

671

主题

1

听众

3247

积分

中级设计师

Rank: 5Rank: 5

纳金币
324742
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

9#
发表于 2012-8-29 23:54:46 |只看该作者
有意思!学习了!
回复

使用道具 举报

5969

主题

1

听众

39万

积分

首席设计师

Rank: 8Rank: 8

纳金币
-1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

10#
发表于 2012-10-18 23:34:56 |只看该作者
其实楼主所说的这些,俺支很少用!
回复

使用道具 举报

12 第1页 | 共2 页下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-7-20 09:01 , Processed in 0.270256 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部