Unity 聖典: http://game.ceeger.com/ (含中文 API、用戶手冊)
Unity 聖典論壇 :http://game.ceeger.com/forum/
u3DPro 論壇: http://www.u3dpro.com/
Unity 3D 教程手冊 ( 遊戲蠻牛 ): http://www.unitymanual.com/
我愛Unity - EasyUnity: http://easyunity.blogspot.tw/
公告版位
目前分類:[遊戲設計] Unity (100)
- May 03 Fri 2013 09:50
一些不錯的 Unity 中文資源網站
- May 02 Thu 2013 19:07
Unity 入門教學:合併物件、合併網路、合併物體
簡介:
基本上就是把 很多物體結合成一個物體 的作法,這種做法有很多優點,例如:
1. 提高效能
2. 統一材質 (只要建立一個材質,就能控制、分配給所有物體)
3. 動畫控制方便 (像是你要在 Unity 做人物換衣服、換物件 卻還要有 人物走路動畫 + 人物攻擊動畫 ...等等 ,
將不同衣服、武器、褲子、人物骨架...等等結合成一個物體,再由同一組骨架控制動畫。
這就能夠實現不同組合角色,卻可以做一樣的動畫、動作)
入門教學步驟:
- Mar 21 Thu 2013 07:32
Unity 汽車 (影音)教學 ,附專案檔&腳本
- Mar 11 Mon 2013 11:43
Unity 讀取 RS232 (使用線程、執行緒 來防止死當)
using UnityEngine;
using System.Collections;
using System.IO.Ports;
using System.Threading;
public class RS232 : MonoBehaviour
{
My m;
void Start ()
{
// 建立一條執行緒讀取RS232,不這麼做 Unity 會死當
- Mar 04 Mon 2013 00:35
Unity C# Json 編碼、解碼 (使用 Json.Net)
請先將 Newtonsoft.Json.dll 檔案放到 Unity 專案底下,即可開始使用。
using UnityEngine;
using System.Collections;
using Newtonsoft.Json;
public class Book
{
public int ID { get; set; }
public string Name { get; set; }
public string Author { get; set; }
}
- Jan 30 Wed 2013 03:44
Unity C# 真‧執行緒
using UnityEngine; using System.Collections; using System.Threading; public class Test : MonoBehaviour { My m; void Start () { m = new My (); Thread t = new Thread (m.RunMe); t.Start (); } void OnApplicationQuit () { m.Stop (); } } class My { int i = 0; bool isRun = true; public void RunMe () { while (isRun) { MonoBehaviour.print ("Run : " + i++); Thread.Sleep (1000); } } public void Stop () { isRun = false; } }
- Dec 29 Sat 2012 13:17
Unity 衣服教學影片
- Dec 01 Sat 2012 05:58
Unity C#與Java伺服器建立 TCP Socket (入門版)
import java.net.*;
- Nov 10 Sat 2012 21:11
每秒持續更新、輸出資訊
- Oct 24 Wed 2012 00:52
Unity 射線(Ray)對物體射擊取得 座標
- Jul 13 Fri 2012 02:16
Unity 開啟執行緒
- Jun 08 Fri 2012 15:46
[ TCP ] C# Socket to Java Socket
[ TCP ] C# Socket to Java Socket
//-------------------------------------------------JAVA-SERVER
- Apr 25 Wed 2012 01:44
Unity CEO:看好中國3D頁遊市場
Unity3D是一個讓你輕鬆創作的多平台的遊戲開發工具,是一個全面整合的專業遊戲引擎。最重要的是,這個開發工具可以為網頁遊戲做出真正的3D 效果。 265G曾經報導過一些Unity3D製作的網頁遊戲,比如《黑潮船長》、《蒸汽之城》。近日,從駿夢處獲悉,他們邀請Unity3D開發商做客中國,並商討進一步的合作。對此,我們特別訪問了Unity總經理Brett Seyler。
265G:首先,您可以介紹下你自己和你的背景情況麼? Unity科技是一家從事什麼的公司?
中國的玩家,大家好!我叫Brett Seyler,現擔任美國UNITY公司戰略VP的職務,此前2年在INSTANTACTIO.公司擔任總經理,總負責TORGUE引擎業務,並且同時負責全球業務的開拓。
在UNITY,我們嘗試讓一些遊戲開發者能夠在我們科技和服務的幫助下更加輕鬆的進行開發。我們的核心事業就是做一個真正出色的,能夠延展到任何一個遊戲開發商所關注的領域的3D遊戲引擎和工具組。
265G:在中國,仍然有很多開發商不知道UNITY。你可以告訴我們UNITY創建的原因和UNITY關注什麼?
UNITY一直關注如何為玩家提供更好的用戶體驗,並且幫助那些非C++天才的開發商去做一款漂亮的遊戲。有了UNITY,所有東西都被設計的更親近,簡單,迅捷和完美。如果得到了授權,UNITY的對於多元平台的部署更加是一個非常簡單,便捷的工具。UNITY能夠使所有內部主要的瀏覽器和操作系統運行的UNITY網頁瀏覽。
除此之外,我們同樣關注所有形式的移動設備。我們創造出可以在所有IOS和ANDROID系統平台上開發手機遊戲的機會(不包括WEB和控制平台)。我們感覺我們可以使開發遊戲變成一個對於創意性專家來說更有意義的事情,那是因為他們也同樣可以賺更多的錢。
265G:可以列舉一些UNITY開發的知名項目麼?
UNITY開發的最成功作品都在蘋果的軟件商店裡,目前有超過1000個遊戲是用UNTIY平台開發而成。如果你瀏覽最受歡迎遊戲排行,你會發現UNITY遊戲往往佔很大比例,在列表中佔10%-20%,其中包括《植物大戰殭屍手機版》等等。對研發者來說這些遊戲都十分暢銷,每個遊戲總價值都在一百萬美元,有一些甚至幾百萬。
除了蘋果應用商店以外,UNITY開發者的最好的作品還包括美國動畫頻道的Fusionfall。它令人難以置信,有接近一千萬小朋友在使用他們開發的網頁遊戲。最近,EA的遊戲Tiger Woods Online. 它也非常棒,對網頁遊戲玩家來說,這是目前操控感最好的網頁遊戲了。另外,我聽說中國也有很多也有公司在使用我們的UNITY引擎開發網頁遊戲。
- Apr 25 Wed 2012 01:40
使用Unity3D內置的Mono框架應注意的問題(附有連接資料庫的例子)
為什麼經常會遇到,在編輯器裡運行腳本沒問題,等打包出來卻不能使用呢?
原因是unity3d默認僅會引用幾個常用的dll,所以寫一般的代碼不會出什麼問題!但其它的呢?最典型的是System.Data.dll,它主要是跟數據庫操作有關的,如果你代碼有引用到它就必須到..\Unity\Editor\Data\Frameworks\Mono.framework中把它拷到Assets目錄下(mono是開源的,你想看它的源代碼用.NET Reflector吧!),不然可能在編輯器中運行沒問題打包後就會出錯了。
另外囉嗦下,如果你是用VS寫代碼的話,添加引用最好到.\Unity\Editor\Data\Frameworks\Mono.framework裡面去引用,此時編輯器如果有出錯的話應該是unity3d默認沒引用到它,那必需到..\Frameworks\Mono.framework把相應的dll複製到Assets目錄下,這樣才能保證最終打包的結果跟編輯器運行的結果是相符的。
可能有人說,我都按上面的做了,打包出來還是有錯呀!比如,NotSupportedException: CodePage 936 notsupported。這其實是國際化的問題了,一般弄數據庫的時候或是編碼轉換時會出現這問題!例如調用這個方法System.Text.Encoding.GetEncoding("gb2312")編輯器中運行不會有問題,打包後就會出現這問題。那麼請注意在..\Frameworks\Mono.framework下你可以看到這麼幾個文件
它們命名可是有講究的哦!為什麼把I18N作為“國際化”的簡稱:其來源是英文單詞internationalization的首末字符i和n之間的字符數為18。 I18N.dll這是基礎,看中間部分West、MidEast、CJK……不用說大家也知道什麼意思吧!一般中文我們用I18N.CJK.dll(中日韓)、I18N.West.dll外加I18N.dll就夠了,打包前把它拷到Assets目錄下的任一文件夾下就行了。
- Apr 23 Mon 2012 11:32
Unity 連線 「 群體一次發送訊息 」:RPC 的使用
「 群體一次發送訊息 」:RPC 的使用
讀這篇文章前,最好是先讀過 Unity 區域連線:http://lolikitty.pixnet.net/blog/post/23148489。
參數可以是 String,boolean,int,float,NetworkPlayer,NetworkViewID,Vector3,Quaternion。
發送訊息 | networkView.RPC(<方法名稱>,<要傳給誰?>,<傳遞的參數>,<傳遞的參數,可以一直延伸下去>...); |
在 客戶端 / 伺服端 方法名稱前面加入 @RPC 就是RPC函數,可以被 networkView.RPC() 傳遞參數進來。
另外,被@RPC標註的函式,小括號()可以『寫』或『不用寫』傳入的參數
// 只要使用到RPC,或者同步化,都要在腳本最後一行加入這一段程式碼
- Apr 22 Sun 2012 21:05
Unity 遊戲手把控制
function Update () {
transform.Translate(new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0) * Time.deltaTime * 10);
if(Input.GetAxis("Vertical") == 1){
// 左邊手把 上鍵
}
if(Input.GetAxis("Horizontal") == 1){
// 左邊手把 右鍵
}
if(Input.GetAxis("Vertical") == -1){
- Apr 16 Mon 2012 01:27
Unity 區域連線
伺服器 | MasterServer.RegisterHost("遊戲類型","遊戲名稱","遊戲註解"); |
客戶端 | MasterServer.RequestHostList("遊戲類型"); |
清除列表 | MasterServer.ClearHostList(); |
請求主機列表 | function Awake() {MasterServer.RequestHostList("LarusTest");} |
取得列表 | var d : HostData[] = MasterServer.PollHostList(); |
//-------------------------------------------------------------------------------伺服器腳本
function Start(){
Network.InitializeServer(32,1024,! Network.HavePublicAddress());
MasterServer.RegisterHost("AAA","BBB","CCC");
print("OK");
- Apr 08 Sun 2012 20:53
Unity 網路測試
測試目前網路狀態程式碼 :
Network.TestConnection( )
或者是...輸出...!!
print( Network.TestConnection() );
|
|
Error | 未知錯誤... |
Undetermined | 還在執行,還沒有結果... |
PublicIPIsConnectable | 偵測到公共 IP,連接埠可以網際網路存取... |
PublicIPPortBlocked | 偵測到公共 IP,連接埠不可以網際網路存取... |
PublicIPNoServerStarted | 偵測到公共 IP,但伺服器沒有建立新遊戲,沒有連接埠可以存取... |
LimitedNATPunchthroughPortRestricted | 有連接埠限制的 NAT 類型,可以NAT穿透給每個使用者,但不可以雙向 |
LimitedNATPunchthroughSymmetric | 雙向 NAT 類型,不可以 NAT穿透給其他雙向NAT 或有連接埠限制NAT |
NATpunchthroughFullCone | 充分錐體型可以 NAT 穿透... |
NATpunchroughAddressRestrictedCone | 位址限制充分錐體型可以 NAT 穿透... |
★ 什麼是 Public IP? 什麼是 Private IP?
☆ Public IP:正式名稱:公共IP ,其他名稱:真實 IP、合法 IP、或 實體 IP
☆ Private IP:正式名稱:私人IP ,其他名稱:假 IP、非法 IP、虛擬 IP
☆ Static IP:正式名稱:固定IP
- Mar 12 Mon 2012 03:50
Unity GUI 繪圖使用者介面 筆記
function OnGUI () {
GUILayout.Window(0,Rect(200,200,400,300),myGUI,"夏娜裝備"); // myGUI 不可以寫成 myGUI ()
}
function myGUI(){
GUILayout.Label("武器欄");
if(GUILayout.Button("拿出武器")){
print("很抱歉,沒有武器可用");
}
}
- Mar 09 Fri 2012 03:11
Unity 筆記 (JavaScript)
顏色意義:關鍵字、數字、字串、註解、重點 Unity-API : 在這裡
語法類:
基本輸出 | print("萌"); |
設定GUI-Text | guiText.text = "萌"; |
移動GUI-Text | guiText.pixelOffset.x = 5; |
鍵盤輸入控制 | if(Input.GetKey("space")){ // 鍵盤按下後,要執行的程式碼,字串必須為小寫 } |
鍵盤按下輸入控制 | if(Input.GetKeyDown("space")){// 鍵盤按下後,要執行的程式碼,字串必須為小寫} |
計時器(秒) |
var t : float = Time.time; |
GUI按鈕控制 | if(GUI.Button(Rect(x,y,w,h),"ABC")){ // 按鈕按下後,要執行的程式碼 } |
取亂數 | var f : float = Random.Range(1,7); // 產生1~6,無7 |
設定GUI-Label | GUI.Label(Rect(x,y,w,h),"ABC"); |
播放動畫 | animation.Play("動畫名稱"); // 動畫名稱要從外部控制面板命名 |
播放混合動畫 | animation.CrossFade("動畫名稱"); // 動畫名稱要從外部控制面板命名 |
取得物件速度 | var s : float = rigidbody.velocity.magnitude; |
物件加速 (場景座標) | rigidbody.AddForce(transform.forward * 5); |
物件加速 (物體座標) | rigidbody.AddRelativeForce(transform.forward * 5); |
捨小數 | var i : int= Mathf.Floor(3.333); // i = 3 |
取 0~1 | var i : int = Mathf.Clamp01(0.9) // i = 0, 如果大於1 輸出1,如果小於1 輸出0 |
停止遊戲物件 | gameObject.active = false; |
加入 Texture | var tt = Texture; // Texture 要從外部控制面板拉入 GUI.DrawTexture(Rect(x,y,w,h),tt); |
改變GUI風格 | var gs = GUIStyle; // GUIStyle 要從外部控制面板設定 GUI.Label(Rect(x,y,w,h),"ABC",gs); // 例子,其他GUI意同 |
碰撞後呼叫函式 | // ★外部控制面板 Collider 中的 Is Trigger 要打勾 function OnTriggerEnter( c : Collider ){ // 碰撞後要執行的程式碼 } // c 為外部碰撞的遊戲物件(GameObject) |
碰撞後取得標籤名 tag名 |
// ★ tag 要在外部控制面板 加入並設定 tag 名稱,最後將 tag 套用於物件上, // tag 名稱開頭一定要大寫,如:Player、Aaa、Bbb、Ccc、Ddd |