發表文章

目前顯示的是有「開發」標籤的文章

NEIL的Unity學習筆記(5) - XML 寫入 和 二三事

XML 寫入 和 二三事 應朋友要求幫忙寫了一個記帳用的手機程式,慣例順道來分享箇中經驗。 XML mini Accounting https://play.google.com/store/apps/details?id=com.CF.XmlminiAccount 首先非常感謝雨松 MOMO 的文章 http://www.xuanyusong.com/archives/1901 基本上我是以另一種方式再解釋一次 首先 了解一下檔案放置的位置 public static string filepath = Application.dataPath + @"/StreamingAssets/my.xml";     public static string filepath = Application.persistentDataPath+ "/my.xml" ; // for android 要讓手機裝置可以找到被 unity 所建立的檔案,必需要設定 file> build setting>player setting>other settings>configuration> write Access 設定為 external(SD card), 那檔案可以使用你手機的檔案管理員於 "Android/data/app/com.yourappname/files" 中找到 接下來開始說明如何建立 XML 檔案 首先載入要使用的資料庫 using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Xml; using System.IO; using System.Text; ------------------------------------------------------------------------  // 定義 xmlDoc 為 XmlDocument() 設定的屬性 ( 就是 xml).   ...

NEIL的Unity學習筆記(4) - 3DSMAX biped 在unity混合動畫設定與注意事項

圖片
3DSMAX biped 在 unity 混合動畫設定與注意事項 好久沒有更新 unity 筆記了,因為之前都在不務正業, 哈哈哈。 最近又一個人完成了一款作品《3Braves》   https://play.google.com/store/apps/details?id=com.CC.FF 當中混合動畫的運用忙了好一陣子才搞懂。 如果你製作的遊戲中沒有特別需要編輯骨架的位移的話,又或者你是使用自組骨架的話,那這篇你大概不太需要看下去了。因為 unity 在 animation mask 的運用上已經非常非常簡單。步驟如下 1. 新增 animation mask,import 模型骨架資料並勾選你需要的 bones. 2. 於 Animator 介面中新增 layer, 載入 animation mask, 設定 weight 為 1. Done. 非常簡單。 接下來的部份就是適合「需要編輯骨架的數值」的情況。 首先我要說明白,這裡只有帶出一些思考方向,並沒有提供全面的解決方法,很多時候你必需要靠你自己找到解決方法。 首先我們先從 3DS MAX 的骨架設定說明。   在 unity 中, 0 和 1 的位置與整個模型的位移綁定在一起,如果 1 轉了 90 度,那整個模型也轉了 90 度,所以 1 是不能有任何動畫。 而 2 也不能有動畫,因為我們將會在 2 寫入要位移的數值,在我的例子中就是旋轉的數值,原因是如果在有動畫的 2 上作出旋轉的編輯的話,會影響到手部和頭的動作在 unity 中產生不到位的情況。簡單說就是會影響原來的動畫設定,除非你在 2 上沒有設定位移,則沒有影響。 所以你只能在 3 以上的骨架編輯動畫,而需要保留最下的兩節 spine 來制定混合動畫。 之後把模型在 unity 中載入,按照上面的步驟設定即可。 那如何利用程式控制骨架呢 ? 如下 //首先指定骨架物件 Public GamObject spine;// 在場中把需要轉動的骨架拉進來 // 控制骨架 Y 軸旋轉  spine.transform.eulerAngles=new Vector3(0,lookBox.transform....

NEIL的Unity學習筆記(3) - 轉珠寫法簡易入門

圖片
寫了一個轉珠的遊戲,順道也寫一下教學,有興趣的話可以下載看看 https://play.google.com/store/apps/details?id=com.FruitsPuzzle.CF 這個簡易寫法跟一些主流遊戲的差別在於珠子的移動判斷。 我分享的這個簡易入門版只是進行了珠子的位置互換,而主流遊戲如龍族拼圖,它可能是使用了類似a star演算法。更具體一點來說,這個簡易版的缺憾就是,如果你移動太快,會偵測不到移動路徑中的珠子,會直接與最後位置的珠子互換。而龍族拼圖會把你最後的位置進行A* 尋路演算,與路徑中的每一顆珠子互換。 另外這個寫法是原地重新,非主流遊戲的往下/往上掉落。消珠的方式也有差異。 所以這算是一個概念式的入門分享,更進階的請自己努力去想一想吧。 首先,我們會利用2D array的寫法去建立5*6的架構 建立一個public static DATA的公用資料庫,然後進行下列定義 public static int row=5;    //這裡 row 和 column的名字我倒轉了, 別在意, 看懂就好 public static int column=6; public static int[,] _Matrix = new int[column,row]; 注意一下,在unity C sharp的寫法是 int[ a,b], 而不是int[a][b]。 定義好之後,我們利用for loop去快速的幫我們在各個位置設定好數值 for(int b=0;b<column;b++){ for(int a=0;a<row;a++){ _Matrix[b,a]=Random.Range(0,5); } } 因為public static DATA只作資料存取之用,不用也不會依附在物件上面,程式只會在呼叫時才會運用,所以我們要建立一個主運行的script,我把他叫作GlobalControllor。 然後在裡面建立一個產生珠子的function void respawn(){ //預先建立一個空物件供珠子依附,如果要共用function的話多做一個動作把珠子移除,避免重複產生 balls....