查看: 182|回復: 0
打印 上一主題 下一主題

曾道人单双: [其他] Unity的C#入門基礎4

[復制鏈接]
yanny    

曾道人攻略图2019 www.tqikp.icu 600

主題

0

聽眾

1萬

積分

版主

Rank: 7Rank: 7Rank: 7

納金幣
11078
精華
0

優秀版主 榮譽管理 論壇元老

跳轉到指定樓層
樓主
發表于 2017-10-30 11:56:16 |只看該作者 |倒序瀏覽
鳴謝:杭者(//www.cnblogs.com/HangZhe/)

一、數組存放同種類型的一組數據,同類+多個
1.定義
int [] int_set;
int_set=new int[10];  //在堆上分配出10個int,int_set是數組的引用變量,指向10個int大小的內存空間。new 類型[容量]
2.訪問
數組引用變量名稱[索引],int_set[0]=0,int_set[1]=1,int_set[1]=2,訪問數組的元素。
數組大小是有限的,所以數組訪問千萬不能越界,10個元素大小的數組,索引就是0到9,100個元素大小的數組,索引就是0到99。
數組容量一旦確定,就無法再擴展。
索引可以是常量也可以是變量。int_set[index]=5;
3.遍歷
訪問數組里面的每一個元素
for(int i=0;i<10;i++)
{
  int_set=i+1;
  Debug.Log(int_set);
}

二、String1.string.Fromat格式化創建一個字符串
string str=string.Fromat("{0} {1} {2}",“xiaoming”,10,"male");
Debug.Log(str);
群發短信//XXX,祝福你新年快樂
for(int i=0;i<10;i++)
{
  string fmr_str="{0}:{1} happy new year";
  Debug.Log(string.Format(fmt_str,i,i));
}

2.字符串相等判斷
str="Liming";
if(str.Equals("Liming")){
  Debug.Log("Equals");
}

3.轉換大小寫
str.ToUpper();//全部轉大寫
str.ToLower();//全部轉小寫

三、static的用法1.static類的靜態方法---不需要實例(與類的實例沒有任何關系)就可以調用,格式:類名.函數方法名字,全局唯一。
int age;
public void normal()
{
  this.age=0;
}
public static void test()
{
  //由于沒有對象實例,不能訪問對象的數據成員
  Debug.Log("Person test");
}
//調用
Person p;
p=new Person();
p.normal();//需要類的實例調用
Person.test();//不需要類的實例直接用類名調用
//用途
用于一些只有邏輯,沒有對象的計算,比如我們平時用的Math.sum(),Math.sort(),Math.sin(),Math.cos()等等處理純粹的邏輯。

2.static類的靜態變量(類.變量名稱)---不需要實例(與類的實例沒有任何關系)就可以調用。格式:類名.變量名字,全局唯一
public  static  float PI=3.14F;//存放在數據段上,所有的類都共用同一個內存。在編譯的時候靜態的內存已經釋放出來了,永遠不會放棄,全局唯一。
//使用
Person.PI=3.14f;

注意:普通的成員函數,成員變量,可以通過this,來訪問實例的數據成員。static修飾的靜態變量,靜態函數是沒有this的,并且不能訪問實例的數據,因為它的調用壓根就和實例無關。
//內存中的存放位置
在數據段中,全局變量,不可被修改

四、const的用法const修飾的類的成員變量,在編譯的時候確定的常量,一旦把一個變量定義為const,你就再也無法修改,全局唯一。格式:類名.變量名
public (static) const int t=3;
Person.t=4;//語句是錯誤的,不能修改的
Debug.Log(Person.t);//只能去訪問,讀取
//用途
在寫代碼邏輯的過程中,需要用一個有意義的名字來代表一個數IDLE , ATTACK , DEAD , WALK     1,2,3,4
//內存中的存放位置
在數據段中,全局變量,不可被修改

五、readonly的用法實例化時確定的變量,const修飾的類的成員變量,還有一次修改的機會,這個機會在對象的構造函數里面可以使用,后面就再也不能修改。像性別變量sex,一出生就注定的變量,或者是父母變量,一出生就注定的變量。
每一個實例都有一個readonly變量,和前面的static和const不一樣。格式:對象引用變量名.變量名
public readonly int t=4;
public Person()
{
  this.t=5;
}

六、泛型編程1.首先指明一個泛型類,這東西其實是一種模板。
class Point<T>{
  T xpos;
  T ypos;
}

2.實例化泛型類,指明這個泛型到底是哪種類型Point<int>
Point<int> point=new Point<int>();
Point<float> p_float=new Point<float>();
Point<double> p_double=new Point<double>();

3.編譯器會使用模板為我們創建相應的類,這個過程是隱示的。

class Point<int>{
  int xpos;
  int ypos;
}
注意:如果數據成員要做成泛型的,類也要做成泛型的。

七、名字空間的使用在項目開發的過程中,難免會用同樣的類名字,所以就要使用名字空間,名字空間帶著開發者很強的烙印。
例子:A公司開發了軟件的一部分代碼,里面有一個類的名字是pay,B公司開發了軟件的另外一部分代碼,里面也有一個類的名字是pay,
當最后兩家開發公司的代碼整合后,如果C用戶來使用這一軟件,發現,調用pay類的時候會出現沖突,不知道要用誰的pay,這就需要使用名字空間來區分兩家公司定義的類。
所以,如果是做底層的開發人員,在把自己寫的東西SDK,庫,給別人的時候要記得加名字空間。
using UnityEngine;就是Unity的名字空間,帶著很強的公司烙印。
就像在福建有個人叫李偉,在廣東也有一個人叫李偉,在浙江也有一個人叫李偉,我們之所以可以區分他們,是因為他們的地區不同,用省份進行了分區

1.自定義名字空間:
namespace my_namespace{
  class Person(){
    int xpos;
    int ypos;
  }
}
2.在外面就算也有一個名為Person的類也沒關系,因為兩者的名字空間不同。
my_namespace.Person person=new my_namespace.Person();

注意:為了不在每個類前面都寫一個名字空間,可以使用using my_namespace;
也就是在開頭寫:
using my_namespace;//意思就是加入一個搜索范圍來查找類或方法,
namespace my_namespace{
  class Person(){
    int xpos;
    int ypos;
  }
}

搜索類的定義的過程:首先會查找當前名字空間也可以理解為當前.cs文件中有沒有定義這個類,沒有再從第一個using的名字空間范圍里開始找起,直到找到處于當前名字空間且與所查找的類的名字相同的類或方法。

您需要登錄后才可以回帖 登錄 | 立即注冊

關閉

站長推薦上一條 /1 下一條

手機版|曾道人攻略图2019 ( 閩ICP備08008928號  

GMT+8, 2019-9-21 21:29 , Processed in 0.111894 second(s), 33 queries .

Powered by 曾道人攻略图2019-曾道人攻略图2019 X2.5

© 2008-2019 Narkii Inc.

回頂部