2013年9月9日 星期一

Unity 學習筆記

http://unity3dna.blogspot.tw/2013/06/unity.html#more




 設定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);
 捨小數 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 //  碰撞物還必須設定 rigidbody , 重力可設為0
 function OnTriggerEnter( c : Collider ){ if(c.tag == "Player"){} }
 碰撞後瞬間移動
 位置
 function OnTriggerEnter( c : Collider ){ if(c.tag == "Player"){
          c.transform.position = Vector(x,y,z);
} }
 瞬間移動物件 transform.position = Vector3(x,y,z);
 平滑旋轉物件 transform.Rotate(x, y, z);
 取得當前物件座標 var x : float = transform.position.x;
 刪除本地物件 Destroy(gameObject);
 切換場景  //使用數字控制要在外部 File→Build Settings→Scens In Build 設定場景順序
  Application.LoadLevel(0); // 切換到場景 0
  Application.LoadLevel(1); // 切換到場景 1
  Application.LoadLevel(2); // 切換到場景 2  // 使用文字控制是使用場景檔案名稱,例如 Level1.unity 檔,只要輸入 Level1 即可
  Application.LoadLevel("Level1"); // 切換到場景 Level1
  Application.LoadLevel("Level1"); // 切換到場景 Level1
 加入已預製好的物件
 到場景中
 GameObject aaa; // 要把預製物件套用至 aaa 控制面板中
 Instantiate(aaa,Vector3(x,y,z),Quaternion.identity); 
 每FPS維持等速度 Time.deltaTime
 按鍵輸入,水平控制
 " W D ← →  " 等
按鍵之移動數值取得
 Input.GetAxisRaw("Horizontal")
 物件右移動1 transform.Translate(Vector3.right);
 物件右移動2 transform.Translate(Vector3(1,0,0));
 取得目前遊戲解析度 var w : int = Screen.width;
 var h : int = Screen.height;
 判斷滑鼠按鍵 if(Input.GetMouseButtonDown(0))    // 滑鼠左鍵
 if(Input.GetMouseButtonDown(1))    // 滑鼠右鍵
 if(Input.GetMouseButtonDown(2))    // 滑鼠中鍵
 持續移動物件 transform.Translate( Vector3(0, 0, 1) );
 transform.Translate( Vector3.up );
 取得三軸加速器狀態
 (Android, iPhone)
 // 可以取得 x , y , z 三軸加速座標 ( 本範例只取得 x )
 var x : float = Input.acceleration.x  
 旋轉物件到指定角度 transform.rotation = Quaternion.Euler(0, 0, 0); // 與設定外部控制面板一樣
 建立重複按鈕
 按下按鈕為 true
 直到放開才為 false
 void OnGUI{
     // 如果用戶將按鈕按下,三秒後放開。殺必死會持續列印到放開按鈕 (例如印 100次)
     if(GUI.RepeatButton(Rect(0,0,50,20),"萌")){ print("殺必死"); }
 }
 建立按鈕
 按下按鈕為 true
 但馬上就變成 false
void OnGUI{
     // 如果用戶將按鈕按下,三秒後放開。殺必死只會被列印一次
    if(GUI.Button(Rect(0,0,50,20),"萌")){ print("殺必死"); }
}
 更改 GUI 樣式 var a : GUISkin ; // 要從外部新建一個 GUISkin 並從控制面板拉進來
 function OnGUI () {
     GUI.skin = a;
     GUILayout.Label("萌"); // 此文字會依造外部 GUISyin 設定檔而改變
 播放聲音 // 要從外部建立一個空物件,並給予一個 AudioSource 元件,
 // 再將mp3音樂檔拖曳進AudioSource中,之後再將這空物件再拖曳進此腳本中。 // 如果要重複撥放,請在外部 AudioSource 設定
 var sound : AudioSource;
 function Start(){
     sound.Play(); // 撥放
     // sound.pitch = 1; // (可選) 改變音調。例如在賽車遊戲中控制引擎聲。
     // sound.Stop(); // (可選) 停止
}
 目前網路狀態 Network.TestConnection()  //  更詳細的說明請*點這裡*
 偵測
 公開IP 或 私人IP
 if(Network.HavePublicAddress){ /* 公開IP */ }else { /* 私人IP */ }
 初始化伺服器1 Network.InitializeServer(5, 88, true); // 可以連入5人,Port=88,使用NAT穿透
 初始化伺服器2 Network.InitializeServer(5, 88, false); // 可以連入5人,Port=88,不使用NAT穿透
 初始化伺服器3 // 可以連入 5 人,Port = 88,自動設定偵測是否要NAT穿透
 Network.InitializeServer(5, 88, ! Network.HavePublicAddress());
 將伺服器設定密碼 Network.incomingPassword = "abcABC1234"; // 最好寫在初始化伺服器前
 結束遊戲呼叫方法 void OnApplicationQuit(){} // 開發階段也有效
 強制結束遊戲 Application.Quit();



介面設定 (非語法類):
 陰影顯示範圍  Edit→Project Setting→Quality
 依造你的畫質 Fastest / Fast / Simple / Good / Beautiful / Fantastic
 修改 Shadow Distance 的值 (例如 1000 ,越大看得越遠)