2012年1月30日 星期一

unity中文字顯示




最近,需要在畫面上呈現中文按鍵、指引文字,找了找幾種可能的Solution。而有了以下的方法跟大家分享。最後採用的方法是將中文字儲存在檔案中,讀取後存到string陣列中,便可以直接引用呈現在畫面上。

2012年1月23日 星期一

[客座投稿] 奇幻森林 (Creavures): PC to iPad優化多邊形面數實例



Dear All:
UnityIn這次經過Muse Game的授權,翻譯了他們在Blog裡的一篇文章,是關於 “奇幻森林” 從PC版Porting到iOS時,美術在處理模型面數上的一些心得與建議,相當有實務價值,大家不訪參考看看吧!!

原文標題:The iPad Polygon Diet

【翻譯文】

從PC遊戲過渡到iOS,“奇幻森林 (Creavures)” 為了滿足在行動平台上的硬體需求,歷經了些顯著的改變。程序和美術人員都同樣面臨,對現有圖形規格作簡化的難題,讓遊戲可以在iPhone上順利運行。Shaders的修改、UI的重新設計,以及處理在同一畫面上過多數量的Skinned Meshes問題。(Skinned Meshes是多邊形物件,受由關節鏈 (joint chains) 影響產生動畫)。對於大部分的網格,不管是在關節數 (joints) 與網格密度 (mesh density) 來說,都是“奇幻森林” 相當重要的部分。作為遊戲最吸引人的要素之一,就是小動物間細微與多變的動畫互動,要從這些角色裡刪除一些關節點 (joints) 似乎不太可能。然而,我們還是可以採取降低動畫網格裡“點” (vertices) 的數量,來以減輕角色對iPad處理能力的需求。

2012年1月14日 星期六

“手機”讀取XML!! Ver 1.5



Dear All:
我們都知道如果將檔案或Prefab放到Resources的資料夾,就可以透過Resources這個class讀取資料夾中的檔案或Prefab。我們也知道在UNITY裡頭,可以使用.NET Framework的XmlReader來讀取XML檔案。我們更清楚,使用Application.dataPath可以取得Assert資料夾的位置。所以...
問題:當你把XML檔案放置於Resources資料夾中,你要怎麼讀取這個檔案?
以我這個蠢才來說,會使用XmlReader這個Class,然後檔案讀取路徑為:Application.dataPath + "Resources/expTable.xml"。接著用MS給的範例讀取我要的資料,如下所示:
while( reader.Read() ) {
switch( reader.NodeType ) {
case XmlNodeType.Element:
break;
}
}

OK!GOOD,一切就緒!!啟動Editor,資料正常!打完收工...
...
....
.....
......(慢著~~怎麼放上Android手機後不正常??)
對!你中招了,因為Application.dataPath在手機上所表示的路徑根本不是Asset資料夾所在的位置,而是:
/mnt/asec/com.xxx.projectx/pkg.apk  (以Android為例)
這是"三小"?? (錯愕)...#@$@$...
所以在PC可以Loading的檔案,現在變成找不到!!解法的辦法是:
//一樣利用Resources class讀取xml,只是先暫時轉換成TextAsset
TextAsset t = Resources.Load("expTable") as TextAsset ; 
//接著再轉換成XmlReader
XmlReader reader = XmlReader.Create( new StringReader( t.text ) );
OK!這才叫“打完收工”

補充:
TextAsset可以支援UTF-8的編碼,如果有使用中文的朋友,記得把XML檔案存成UTF-8格式。在Windows底下,你可以使用PSPad,到"格式" -> "UTF-8" 後存檔即可。


作者:Bric Lin, Email: ericlin09@gmail.com
曾任職台灣某遊戲公司研發Game Engine,為書籍“OGRE 入門指南”的譯者之一,專攻Rendering技術與遊戲開發,目前為獨立開發團隊CocosPlay主程式



2012年1月13日 星期五

啥?只有 50MB


Dear All:

記得當初負責UNITY的survey時,對於官網上其中一條FAQ讓我很困惑,上面寫著:

What is the Unity caching product and how can we license it?

We offer a special extension of the Unity webplayer which can cache asset bundles locally. This is licensed on a revenue-share model under an agreement made by our business development team. Generally it is licensed to developers with a large anticipated revenue and not on a smaller scale basis.

2012年1月12日 星期四

Unity3.50b6, Beta開箱心得文


power up
Unity3.5已於日前提供下載。其中,最令人引頸期盼的便是Flash相容格式swf的輸出。縱使在HTML5逐漸抬頭的趨勢下,由於絕大部分電腦的瀏覽器仍相容於Flash,可以預見的,這項功能將受到原Flash開發者相當的青睞,也提供Unity3D開發者更廣泛的使用者市場。
關於3.5首頁上羅列了五大新優點,包括了粒子系統的改進、路徑搜尋系統、改寫Occlusion Culling系統、原生相容於Google Chrome瀏覽器、更好的渲染技術(HDR)。主頁上將改版清單羅列開來,洋洋灑灑的一大串。剛剛發現奇銳科技已經穩扎穩打的介紹各改版項目,我將僅針對實際試用後的觀感,跟大家做為分享。

2012年1月11日 星期三

Awake() 跟 Start() 差在哪?



Dear All:
剛開始學UNITY的時候,最難搞定的就是這兩個functions的差異,依照官方文件所描述的:
Awake(): Awake is called when the script instance is being loaded.
Start(): Start is called just before any of the Update methods is called the first time.

2012年1月10日 星期二

UNITY + Xperia Game pad



Dear All:
Hello~如果有Xperia Play且常玩遊戲的朋友因該都有發現,目前支援Xperia Game pad的遊戲其實也滿多的,其中UNITY的作品也不少,最近一款讓我比較喜歡的就是“Muffin Knight”,開發商Angry Mob Games在更之前的一款作品“Guerrilla Bob”,早在2011年初就支援了Xperia Play的Game pad。

Unity Threading



在Unity上使用多執行緒主要有兩種方法。第一是在程式一開始執行時即丟出執行緒,在執行緒中以無窮迴圈的方式監聽或是接收運算結果。第二,在觸發時事件時才丟出執行緒。兩者的寫法分敘如下。

2012年1月9日 星期一

UNITY EZGUI: What is Transition Forward and Back??

















Dear All:
之前使用EZGUI真的很偷懶,都不弄懂Panel Transition裡Forward與Back的真正差意。今天終於下定決心搞定它。說穿了就是Panel裡index的 “向上增加” 或 “向下遞減” 而已。

來看個例子,假設有三個Panel分別是Menu與Options,其中各自index為0與1。當使用UIPanelManager呼叫Bring函數切換Panel時,相對應的Forward與Back呼叫如下:

  1. Menu (index:0) -> Options (index:1),對應於 Menu (呼叫Dismiss Forward)  -> Options (呼叫BringInFoward),反之
  2.  Options (index:1) -> Menu (index:0),對應於Options (呼叫DismissBack) ->  Menu (呼叫BringInBack)

總結:
index由小變大就是呼叫Forward的Transition,相反的由大變小就呼叫Back的Transition。還有特別注意這東西與UIPanelManager是不是線性的向前或向後BringIn無關,只跟你“目前所在的Panel的index,與接下來要切換的那個Panel的index號碼大小有關”。

當然也許你會發現UIPanel這個Class本身也有兩個funciton BringIn()與Dismiss(),這部分在EZGUI文件上就寫得很清楚了,它們分別呼叫的是:BringInForwad與DismissForward。


作者:Bric Lin, Email: ericlin09@gmail.com
曾任職台灣某遊戲公司研發Game Engine,為書籍“OGRE 入門指南”的譯者之一,專攻Rendering技術與遊戲開發,目前為獨立開發團隊CocosPlay主程式


UNITY Motion Trail Script!!



原理:
遊戲用到的Motion Trail原理其實很簡單,就是利用一個Queue,將兩參考點於每個Frame的位置記錄下來,這記錄通常是有條件的,也許是兩參考點與上一個Frame的紀錄比較距離,若高過某一threadhould就push in,此外在每個Frame裡也檢查已經在Queue中的其它點,生命周期是不是已經到了,如果是就將這次的紀錄pop out。