iLMS知識社群歷程檔登入
位置: 黃國哲 > Unity
20200404 #C語法
by 黃國哲 2020-04-04 14:10:05, 回應(0), 人氣(607)



Button使用

 

unity C# 語法教學入門

王啟榮 發表於 2018/08/27_22:04  ( 最後修改 2020/03/29_17:58 )

 

註解: // 單行註解   

              /* 多行註解 */

宣告變數: int a = 6; // 宣告一個名稱為 a 的變數,資料類型為整數、值為 6

                                 要把 a 1 可寫 a=a+1 a++;   

                                要把 a 5 就寫 a+=5;

 

常用資料類型: int -> 整數

 (注意大小寫)   float -> 浮點數(有小數點的數。數字後要加 f,例如 3.6f )

         string -> 字串(前後都要加",例如"abc")

         bool -> 布林(值只有 true false 兩種)

         GameObject -> 遊戲物件

         Vector3 -> 簡單來說就是一組(x,y,z)

 

 ◎ 字串與數字轉換:

      int.Parse("67"); // string int

      float.Parse("25.36"); // string float

      65.ToString(); // 數字轉 string

      yourFloat.ToString("0.00"); // float string 並取到小數第2

 

字串相關: string[] words = yourString.Split('_'); // 分割字串(_符號為例)

yourString.Substring( 0, 2 ); // 抓取子字串(從第1個字開始連續抓2)

yourString.Length; // 抓取字串長度

yourString.ToLower(); // 把字串中所有大寫英文字母轉成小寫

yourString.ToUpper(); // 把字串中所有小寫英文字母轉成大寫

 

 ◎ 字串反轉: 

// 要加 using System;

string strA = "unity c#";

char[] myArray = strA.ToCharArray();

Array.Reverse(myArray);

string strB = new string(myArray); // 結果 strB #c ytinu


if 判斷式:

 if ( n > 50 ){ } // 如果 n 大於 50 就執行

 else if ( n == 10 ){ } // 如果 n 等於 10 就執行

 else { } // 以上條件都不符合,就執行 else

同一個判斷式最多只會執行一個結果(最先符合條件者),撰寫時要留意先後順序。

 

 關係運算子: 等於== 不等於!= 大於> 大於等於>= 小於< 小於等於<=

 邏輯運算子: 且&& 或||

 例如: if ( a>5 && b==3 ){ } 代表要同時符合 a>5 b==3 這兩個條件才行

    if ( a>5 || b==3 ){ } 代表只要符合 a>5 b==3 其中一個條件即可

 

 判斷布林值為 true false :

   if ( a==true ) 可寫為 if ( a )

   if ( a==false ) 可寫為 if ( !a )

 

陣列(array)

  請參閱「unity Array 陣列資料存取」這篇文章。

 

迴圈:

 ◎ for 迴圈

  for (int i=0; i<5; i++) { print(i); }

  說明:i 的啟始值為 0 i 小於 5 就繼續跑迴圈, i 每次加 1

     結果會依序輸出 01234

 

 ◎ while 迴圈

  int x = 0;

  while (x < 3) {  x++; print(x);  } // 結果會依序輸出 123

 

函數(function)

 ◎ 基本語法

  void test(){ } // 宣告一個名稱為 test 的函數      (前面加 void 代表沒有回傳值)

  test(); // 呼叫函數 test,函數不會主動執行,被呼叫時才會執行。

 

 ◎ 呼叫加傳值

      void test( int a, string b ){ } // 括號內的兩個參數,用來接收傳過來的值

                                                                              (資料類型要對應)

  test( 7, "hello" ); // 呼叫函數,且傳兩個值(引數)過去

 

 ◎ 回傳值

  int test(){ // 宣告函數時前面加 int,代表會回傳整數

    return 123; // 回傳整數 123 (return 必需加在函數的最後)

  }

 int c = test(); // 呼叫函數,且宣告一個變數 c 以儲存回傳值(結果 c 123)

 ※ 若要多個回傳值,請參閱「呼叫函數返回多個回傳值」這篇文章。

 

 ◎ 傳址呼叫

  void myTest( ref int a ){ a = 12; }

  int a = 5;

  myTest ( ref a );

  print ( a ); // 結果 a 12 引數和參數前面加 ref,代表傳址而非傳值。

 

類別(class)與物件(object)

 ◎ 宣告類別

  新增一個名為 myCharacter script,內容如下:

  public class myCharacter {  public int _hp;  } // 例如帶有 hp 值的角色藍圖

 

 ◎ 建立物件

  在另一個 script 輸入: 

  myCharacter npc = new myCharacter();

  npc._hp = 90; // 設定 npc 物件的 hp

  ※ 若要進一步了解,請參閱「封裝(Encapsulation)與資料存取」這篇文章。

 

 

回應