參考書籍:
《Unity3D/2D手機(jī)游戲開發(fā)》
一、C#簡介
在Unity編程中,使用C#作為腳本語言是大多數(shù)人的選擇,C#是一門面向?qū)ο笳Z言,具有類似Java的垃圾回收機(jī)制
Unity中使用的C#和.NET平臺下的C#很像卻不完全一樣,Unity內(nèi)的C#運(yùn)行于Mono虛擬機(jī)里,是一個開源的軟件
平臺,以.NET開發(fā)框架為基礎(chǔ),在U3D中使用C#不僅能調(diào)用引擎本身的功能,還能調(diào)用.NET提供的大部分功能。
二、C#基本語法
1.類型
C#是一種強(qiáng)類型語言,必須聲明對象的類型,對象類型對應(yīng)的就是所占內(nèi)存的大小
C#類型分為兩大類:值類型和引用類型。
兩者的主要區(qū)別是在內(nèi)存中的存儲方式不同,值類型通常是在棧上靜態(tài)分配的,引用類型在進(jìn)程堆中動態(tài)分配
*值類型包括內(nèi)置類型(用關(guān)鍵字int、char等聲明),結(jié)構(gòu)(關(guān)鍵字struct聲明)和枚舉(關(guān)鍵字enum聲明)
*引用類型包括類(用關(guān)鍵字class聲明)和委托(用關(guān)鍵字delegate聲明)
1.1內(nèi)置類型
所有的值類型隱形派生System.ValueType,其中內(nèi)置類型是最基本的類型。
[類型/大小or字節(jié)/.NET類型/說明]
byte 1 Byte 無符號,值 0~255
char 2 Char Unicode字符
bool 1 Boolean true或者false
sbyte 1 SByte 有符號,值-128~127
short 2 Int16 無符號,值-32768~32767
ushort 2 UInt16 無符號,值0~65535
int 4 Int32 有符號整數(shù),值-2147483648~2147483647
*枚舉可看作一個常量列表
三元操作符:條件表達(dá)式?表達(dá)式1:表達(dá)式2
類
//定義類
public class AmClass{
int a = 0;
int b = 1;
//定義構(gòu)造函數(shù)
public AmClass(){
Debug.Log("aaa");
}
//定義方法
public int Add(){
return a+b;
}
}
//創(chuàng)建對象
AmClass ac = new AmClass();
//調(diào)用Add方法
int n = ac.Add();
封裝
public 完全公開,在類內(nèi)部或外部任何地方可訪問
protected 同一名字空間內(nèi)的派生類可訪問
private 僅在類內(nèi)部可以訪問
//定義一個公有類
public class A
{
public int a = 0;//公有的變量
int b = 0;//默認(rèn)為private,只能在類內(nèi)部訪問
//定義一個公有方法
public int Add()
{
return a+b;
}
//定義一個私有方法
private void Len()
{
//....
}
}
//.....
A a = new A();//創(chuàng)建一個對象
a.Add();
繼承
//定義一個基類
public class Enemy
{
//構(gòu)造函數(shù)
public Enemy(){
Debug.Log("aaaa");
}
public void UpdateAI(){
Debug.Log ("bbb");
}
}
//派生類boss繼承基類Enemy
public class Boss:Enemy{
//構(gòu)造函數(shù)
public Boss(){
Debug.Log("boss aaaa");
}
}
Boss bo = new Boss ();
bo.UpdateAI ();
重寫override
將需要重寫的方法 標(biāo)記為virtual
在派生類的方法中使用override代替基類的方法