成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Unity3D研究之支持中文與本地文件的讀取寫入

移動開發 iOS 游戲開發
前幾天有個朋友問我為什么在IOS平臺中可以正常的讀寫文件可是在Android平臺中就無法正常的讀寫。當時因為在上班所以我沒時間來幫他解決,晚上回家后我就拿起安卓手機真機調試很快就定位問題所在,原來是他文件的路徑寫錯了。開發中往往一道很難的問題解開的時候發現原來真的非常的簡單,哇咔咔。 剛好在MOMO的書中也有涉及到文件的讀取與寫入,那么本節我將書中的部分內容搬到博客中為大家講解一下。廢話我就不多說了咱直奔主題,創建Text.cs腳本,直接掛在攝像機中。代碼中包括:創建文件、讀取文件、刪除文件。

Text.cs

[代碼]c#/cpp/oc代碼:

001 using UnityEngine;
002 using System.Collections;
003 using System.IO;
004 using System.Collections.Generic;
005 using System;
006  
007 public class Text : MonoBehaviour {
008     //文本中每行的內容
009     ArrayList infoall;
010     //皮膚資源,這里用于顯示中文
011     public GUISkin skin;
012     void Start ()
013     {
014  
015         //刪除文件
016         DeleteFile(Application.persistentDataPath,"FileName.txt");
017  
018         //創建文件,共寫入3次數據
019         CreateFile(Application.persistentDataPath,"FileName.txt","宣雨松MOMO");
020         CreateFile(Application.persistentDataPath,"FileName.txt","宣雨松MOMO");
021         CreateFile(Application.persistentDataPath ,"FileName.txt","宣雨松MOMO");
022         //得到文本中每一行的內容
023         infoall = LoadFile(Application.persistentDataPath,"FileName.txt");
024  
025     }
026  
027    /**
028    * path:文件創建目錄
029    * name:文件的名稱
030    *  info:寫入的內容
031    */
032    void CreateFile(string path,string name,string info)
033    {
034       //文件流信息
035       StreamWriter sw;
036       FileInfo t = new FileInfo(path+"//"+ name);
037       if(!t.Exists)
038       {
039         //如果此文件不存在則創建
040         sw = t.CreateText();
041       }
042       else
043       {
044         //如果此文件存在則打開
045         sw = t.AppendText();
046       }
047       //以行的形式寫入信息
048       sw.WriteLine(info);
049       //關閉流
050       sw.Close();
051       //銷毀流
052       sw.Dispose();
053    } 
054  
055   /**
056    * path:讀取文件的路徑
057    * name:讀取文件的名稱
058    */
059    ArrayList LoadFile(string path,string name)
060    {
061         //使用流的形式讀取
062         StreamReader sr =null;
063         try{
064             sr = File.OpenText(path+"//"+ name);
065         }catch(Exception e)
066         {
067             //路徑與名稱未找到文件則直接返回空
068             return null;
069         }
070         string line;
071         ArrayList arrlist = new ArrayList();
072         while ((line = sr.ReadLine()) != null)
073         {
074             //一行一行的讀取
075             //將每一行的內容存入數組鏈表容器中
076             arrlist.Add(line);
077         }
078         //關閉流
079         sr.Close();
080         //銷毀流
081         sr.Dispose();
082         //將數組鏈表容器返回
083         return arrlist;
084    }  
085  
086   /**
087    * path:刪除文件的路徑
088    * name:刪除文件的名稱
089    */
090  
091    void DeleteFile(string path,string name)
092    {
093         File.Delete(path+"//"+ name);
094  
095    }
096  
097    void OnGUI()
098    {
099         //用新的皮膚資源,顯示中文
100         GUI.skin = skin;
101         //讀取文件中的所有內容
102         foreach(string str in infoall)
103         {
104             //繪制在屏幕當中,哇咔咔!
105             GUILayout.Label(str);
106         }
107  
108    }
109  
110 }

代碼中頭文件需要注意一下,涉及到IO讀取文件。創建文件、刪除文件、讀取文件的方法我也已經封裝好,Start方法中為了避免上次保存文件的殘留首先刪除原來的文件,然后創建文件FileName.txt ,我們也可修改文件的類型的后綴名。這里我寫的是.txt ,為了完整的讓中文出現在IOS與Android中所以這里給文件中寫的數據是”宣雨松MOMO”,最后在OnGUI中將讀取文件的文本信息顯示在屏幕中,腳本保存格式為UTF-16。

代碼中我們保存文件的路徑是Application.persistentDataPath。 如果你寫的路徑是 Application.dataPath在編輯器中是可以正常讀取,但是在IOS與Android中是無法讀取的,昨天問我的那個朋友就是因為這里路徑寫的有問題沒能成功的寫入文件。 Application.persistentDataPath路徑就是將文件保存在手機的沙盒中,如果在編輯器中運行本程序文件將保存在Finder-》 資源庫-》Caches-》你的工程-》保存的文件 。本例的路徑就是 Finder->資源庫-> Caches -> txt->FileName.txt。

OK 截至到這里,運行游戲后在編輯器中是可以正常的看到“宣雨松MOMO”出現在Game視圖中,但是如果你編譯在IOS或者Android上將只顯示”MOMO”,原因很簡單”宣雨松”三個字無法在Unity默認字體中找到,所以無法顯示。而默認字體只有字母和數字、字符。我們為了在移動平臺中正常的顯示中文,需要自制中文字體包。下面我們開始制作一個簡單的字體包,mac機的話大家可以在 資源庫 -》 fonts中 找一個.ttf的字體,或者在網絡中下載一個.ttf字體。MOMO比較喜歡微軟雅黑字體,大家如果也喜歡微軟雅黑可以在后面下載這個工程的源碼,嘿嘿。如下圖所示, Project視圖中的”yh”就是MOMO在網絡中下載的微軟雅黑字體。

FontSize:字體的大小,這里我設置呈50,為了讓大家在IPAD中能看的更清楚。

FontColor:字體顏色。

Character:這里選擇Custom set,因為這里需要配置我們需要的字體。

CustomChars:這里輸入需要制作的字體。Unity默認的字體包含數字符號字母,為了讓移動設備支持中文,這里我輸入”宣雨松”它將生成一個包含“宣雨松”的材質與貼圖,也就是說將我們需要在移動設備中顯示的任何字符串在這里配置一下就OK啦。

最后點擊又小角的Apply按鈕即可完成字體配置。

將字符賦值給創建的皮膚文件然后應用在程序當中即可,如下圖所示這是IPAD中截圖的效果,大家應該會問上面代碼中明明寫入的是”宣雨松MOMO”為什么這里沒能顯示MOMO呢?蛤蛤 原因很簡單,上圖中在Custom Chars中我們只配置了 “宣雨松” 所以這里就只能顯示”宣雨松”無法顯示MOMO啦。。大家可根據自己需要顯示的字符串添加進去即可。在程序中我們可能會寫入很多的中文,但是同樣的文字又沒必要重復出現,那么如何來制作這個字體包呢?制作的細節大家可以參照威哥的博客:http://1vr.cn/article.asp?id=607  他已經寫得很清楚啦。

代碼下載:http://115.com/file/e7ieutvl#Font.unitypackage

責任編輯:冰凝兒
相關推薦

2012-12-24 09:20:48

AndoidUnity3D

2012-12-24 09:09:27

AndoidUnity3D

2012-12-24 09:13:23

iOSUnity3D

2012-12-24 09:15:57

iOSUnity3D

2012-12-24 09:11:58

iOSUnity3D

2012-12-24 09:08:14

iOSUnity3D

2012-12-24 09:14:31

ios

2013-04-25 09:56:24

unity3D手機游戲引擎

2012-12-24 08:48:25

iOSUnity3D

2012-12-24 09:17:12

iOSUnity3D

2013-04-25 10:03:07

unity3D手機游戲引擎

2012-12-24 09:55:15

iOSUnity3D

2013-04-25 13:27:11

unity3D手機游戲引擎

2012-12-24 08:51:23

iOSUnity3D

2012-12-24 09:18:22

iOSUnity3D

2012-12-24 08:52:44

iOSUnity3D

2012-12-24 08:40:12

2012-12-24 08:46:50

iOSUnity3D

2013-06-19 08:52:48

Unity3D

2013-04-25 09:08:39

unity3D手機游戲引擎
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品高潮呻吟久久 | 久久久久久网站 | 午夜视频网 | av免费网站在线观看 | 久久久.com| www.狠狠干 | 久久69精品久久久久久久电影好 | www.亚洲一区二区 | 精品伊人| 国产精品日日做人人爱 | 中文字幕在线二区 | 国产精品日韩在线观看一区二区 | 欧美精品区| 久久精品国产亚洲夜色av网站 | 欧美自拍第一页 | 午夜日韩 | 91大片 | 中文字幕一区二区三区在线观看 | 日日日干干干 | 国产精品久久久久久妇女6080 | 亚洲成人精品国产 | 亚洲成人午夜在线 | a黄视频| 日韩a视频| 国产视频一区二区 | 91精品国产91久久久久久吃药 | 精品亚洲一区二区 | 伊人中文字幕 | 国产精品一区二区在线 | 亚洲精品久久久久久下一站 | 91精品久久久久久久久中文字幕 | 久久这里只有精品首页 | 亚洲国产成人精品在线 | 欧美一级久久精品 | 国产久 | 一区二区三区四区在线视频 | 神马久久久久久久久久 | 免费看的av| 亚洲免费在线 | 午夜精品在线 | 成人免费区一区二区三区 |