聲明:本帖可能包含聯盟鏈接,這意味著如果您點擊鏈接併購買我們推薦的產品,我們可能會獲得佣金。點擊這些鏈接不會花費您任何費用,但可以幫助我資助我的開發項目,同時還能推薦優質資源!

2014年9月23日 星期二

Unity:設計靈活的無縫場景轉換機制

剛開始學習使用 Unity 時應該會發現到,Unity 的儲存並非只有儲存專案(Save Project),較常使用到的是儲存場景(Save Scene),在整個遊戲專案的製作過程中,除非將全部的遊戲畫面都放在同一個場景中處理,否則我們將會儲存多個場景,雖然,Unity 的 Build Settings 中的 Scenes In Build 可以很方便的指定遊戲將會使用到哪幾個場景,而在我們設計的遊戲程式碼之中,也可以很方便地使用 Unity API 中的 Application.LoadLevel() 來載入場景,但這些都只是進行場景轉換的基本動作,在整個遊戲開發上,因應實際需求及考量上,很有必要另行設計一個方便變換及設定的場景轉換機制。

2014年8月10日 星期日

Unity:使用 PHP 的 Session 進行 Server 端驗證以及傳遞資料

相信曾經使用 PHP 製作過具備會員機制的互動式網頁系統的人對於 Session 都不陌生,它可以很方便的確認網頁客戶端的身份、驗證登入狀態以及傳遞資料給同一使用者於下一次請求時使用;而現今已有許多行動裝置遊戲也都具備營運方自己的會員機制以及 Server 端的遊戲邏輯應用及資料庫,以行動裝置的使用族群環境來看,似乎比較少使用所謂長連接的 socket 連線,而比較常見的是類似互動式網頁的非同步連線機制;所以,以下將解說如何使用 Unity 實現 PHP 的 Session。

2014年6月9日 星期一

Unity:自定腳本模板 script template

通常我們在 Unity 編輯器內的 Project view 建立新的 script 檔案時,Unity 會先幫我們指定預設的檔名及預先填入比較通用的 script 內容,如果是 C# 檔,檔案內的 class 名稱也會自動符合檔名,但有時候我們的需求並不是 Unity 預先幫我們建立的那樣,則要每次都手動去改掉,好像有點麻煩;其實這部分是可以自定義的,將來每次新建 script 檔案就不用另外修改了。

2014年5月6日 星期二

Unity:應對各種螢幕比例自動調整畫面縮放及位置


以前曾經發佈過一篇文章『Unity 自動調整 GUI 縮放比例及位置』說明如何應對各種不同解析度畫面,以佔滿版面的方式自動縮放調整 GUI 位置及大小,但這種方式有很大的缺點就是 GUI 遇到比例不同的畫面時,會被拉扯變形,使得圓形變成橢圓形這類的問題發生,而且,現今多數 Unity 使用者可能已不使用 Unity 內建的 GUI class 來製作 UI,而改使用 NGUI、DF-GUI 等其他工具來製作,或是利用自製平面 Mesh 配合 GUI class 來使 GUI 與場景內的其他物件互動更靈活,同時,在 Unity 4.3 發佈了 Unity Native 2D Tools 之後, Unity 在 2D 應用上更為方便及普遍,這也代表著處理 2D 畫面的縮放及位置調整將變得更為重要,所以本篇文章將同時說明 Camera 及 Unity 內建 GUI 在維持原比例以及不維持原比例時的自動縮放及位置調整。

2014年1月13日 星期一

Unity 4.3 之後,Animation 的 PingPong 到哪裡去了?

如果有常使用 Unity 的 Animation 製作物件動態或特效的人,應該都會覺得這是個很方便的工具,只要掛在 GameObject 上的 Component 有 public 欄位,幾乎都能利用 Animation view 建立 Animation Curve 來使該欄位的值隨曲線動態變化,而由這些 Animation Curve 組成的 Animation Clip 可以設定 Wrap Mode,使動畫可以 Loop 不斷重複循環或 PingPong 來回播放,但在 Unity 4.3 之後,Animation view 有些變化較大的更新,設定 Wrap Mode 的欄位竟然不見了,如此一來,使用 Unity 4.3 的使用者該如何使用 PingPong 的功能呢?

2012年2月9日 星期四

C# : 使用 MySQL 的 Transaction

資料庫程式的運作上,我們常常會需要查出某筆資料取得某項資訊,然後依照此資訊修改另一筆資料,修改完再次取出資料經過一些程式判斷的結果,又再對某個資料表新增或刪除資料.... 一連串複雜的動作需要一次完成,通常這是一瞬間就能處理完成的事,所以不應該會中斷;但是當伺服器相當忙錄時,同時有多位使用者對資料庫要求這一系列的連續動作,那麼動作之間就很可能不是處理同一使用者的請求,取得的資料也可能不是預計的正確資料,所以新增、修改、刪除也可能會出錯,為了使這些工作能夠正確,我們可以使用 Transaction 來確保工作過程無誤,如果工作不順利而發生問題無法正確完成,則退回到工作開始前的狀態。

2012年2月8日 星期三

C# : 使用 DataSet 管理從 MySQL 查詢出來的資料

在【C# : 對 MySQL 查詢資料】一文中查詢多筆資料所使用到的 MySqlDataReader 會與資料庫建立持續性的連線,所以在查詢完資料後必須明確的 Close();有時候我們會使用多句不同的查詢語句查詢出資料並長時間交互使用資料內容,而且這些資料並不會馬上被更新或是不需要更新,那麼每次都重新查詢或是使這些 MySqlDataReader 都一直維持連線,好像怎麼樣都不是很理想,這時候我們就可以考慮使用 DataSet 建立資料塊。

C# : 使用 Prepare 處理 MySQL 資料的執行請求

在【C# : 對 MySQL 查詢資料】及【C# : 對 MySQL 新增、修改、刪除資料】二篇文章中說明的都是單次請求單次處理的做法,但如果同一句 MySQL 語句需要多次重複請求處理時,或是看起來很類似的多句 MySQL 語句,只有某些欄位值不同而已,要不斷的解析 MySQL 語句再處理,並不是好的做法,這種狀況我們就可以考慮使用 Prepare,不用每次都解析 MySQL 語句再做處理,只需要在 Prepare 時解析,之後只要不斷改變欄位值重新處理就好了。

C# : 使用 Parameters 處理 MySQL 語句

通常在程式中的 MySQL 語句,我們都是使用一般字串與變數直接組合而成,而這個變數值有時候是使用者從 client 端的表單傳送過來的,此時,如果某些防護未顧慮到,使用者輸入錯誤字元或是利用單引號、分號等特殊字元,將可輕易的中斷原本的 MySQL 語句,進而自行輸入其它語句來對資料庫做其它操作,這將可能發生執行期錯誤,甚至危害到系統。

2012年2月7日 星期二

C# : 對 MySQL 新增、修改、刪除資料


對 MySQL 新增、修改、刪除資料都是使用 MySqlCommand 的 ExecuteNonQuery() 執行後回傳影響筆數,主要是送出的 MySQL 不同的差別而已。